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

6
我将RadioButton的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个回答

10

这是一个图层列表。

<?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>

我知道如何在xml中实现这个,但我不知道如何用代码实现。我尝试在代码中创建一个图层列表,但它没有绘制出来。 - rbasniak
刚刚发现在代码中与layer-list相对应的正确等效物是LayerDrawable。现在我成功让它工作了! - rbasniak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接