Android将Drawable和Shape组合成一个Drawable(以编程方式)

时间:2015-12-30 13:59:28

标签: android android-drawable

我以编程方式设置RadioButton的android:drawable

Drawable unchecked = getResources().getDrawable(R.drawable.ic_room_car);

Drawable d= getResources().getDrawable(R.drawable.ic_room_car);

Shape circle = ?????;
??? checked = combine circle and d


SateListDrawable states= new StateListDrawable();
states.addState(new int[] {android.R.attr.state_checked}, checked);
states.addState(new int[] {}, unchecked);

((RadioButton)findViewById(R.id.icon_1)).setButtonDrawable(states);

基本上它有一个自定义图标,我可以在未经检查的情况下从资源中读取,并且在检查时我想在图标后面画一个圆圈。

未经检查的行为在第二个addState行中设置,并且它正常工作。我的问题是如何以编程方式绘制一个圆,然后以某种方式将它与可读的资源相结合。

1 个答案:

答案 0 :(得分:2)

它是一个图层列表。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/ic_launcher" android:left="10dp" android:right="10dp" android:top="10dp" android:bottom="10dp">
    </item>
    <item>
       <shape android:shape="oval">
            <solid android:color="@android:color/transparent"></solid>
            <stroke android:color="#4b14b1" android:width="1dp"></stroke>
            <size android:height="50dp" android:width="50dp"></size>
        </shape>
    </item>
</layer-list>