Android 以编程方式更改带有文本的按钮的图层列表中形状的颜色

Android 以编程方式更改带有文本的按钮的图层列表中形状的颜色,android,android-layout,android-activity,android-xml,Android,Android Layout,Android Activity,Android Xml,我正在尝试创建一个包含文本和图像的圆形按钮。我想以编程方式将其添加到活动中,同时更改背景颜色 下面的工作正常,但没有图像。 按钮_round.xml: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false"

我正在尝试创建一个包含文本和图像的圆形按钮。我想以编程方式将其添加到活动中,同时更改背景颜色

下面的工作正常,但没有图像。 按钮_round.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false"
          android:id="@+id/button_round_oval">
        <shape android:shape="oval"
            android:id="@+id/button_round_oval_shape">
            <solid android:color="#52a0e8"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape android:shape="oval">
            <solid android:color="#3280c8"/>
        </shape>
    </item>
</selector>
我搜索了一个解决方案,但无法使其工作(例如,here:)

以下是我迄今为止所尝试的:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false"
          android:id="@+id/button_round_oval">
        <layer-list 
            android:id="@+id/button_round_oval_layer">
            <item 
                android:id="@+id/button_round_oval_item">
                <shape 
                    android:shape="oval"
                    android:id="@+id/button_round_oval_shape">
                    <solid android:color="#52a0e8"/>
                </shape>
            </item>
            <item>
                <bitmap 
                    android:gravity="center" 
                    android:src="@drawable/stars_one" />
            </item>
        </layer-list>
    </item>
    <item android:state_pressed="true">
        <shape android:shape="oval">
            <solid android:color="#3280c8"/>
        </shape>
    </item>
</selector>
但在这种情况下,我会收到一条错误消息:

android.graphics.drawable.StateListDrawable cannot be cast to android.graphics.drawable.LayerDrawable
第二个问题是(当这起作用时),如何更改所按下状态的背景色

提前谢谢

LayerDrawable layerDrawable = (LayerDrawable) ContextCompat.getDrawable(getApplicationContext(), R.drawable.button_round);
GradientDrawable bgShape = (GradientDrawable) layerDrawable
                    .findDrawableByLayerId(R.id.button_round_oval_item);
bgShape.setColor(Color.parseColor("#0000FF"));
android.graphics.drawable.StateListDrawable cannot be cast to android.graphics.drawable.LayerDrawable