android - 以编程方式更改图层列表中形状的颜色

标签 android android-layout android-fragments android-activity android-xml

如何以编程方式更改图层列表中形状的颜色 (#000000)?

这是我的图层列表:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#000000" /> // CHANGE THIS COLOR
        </shape>
    </item>
    <item android:left="5dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/bg" />
        </shape>
    </item>
</layer-list>

最佳答案

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/gradientDrawble"> // Give id
        <shape android:shape="rectangle">
            <solid android:color="#000000" /> // CHANGE THIS COLOR
        </shape>
    </item>
    <item android:left="5dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/bg" />
        </shape>
    </item>
</layer-list>

然后在你的代码中添加

LayerDrawable layerDrawable = (LayerDrawable) getResources()
            .getDrawable(R.drawable.my_drawable);
GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable
            .findDrawableByLayerId(R.id.gradientDrawble);
gradientDrawable.setColor(color); // change color

2016 年 10 月更新

getDrawable() 现已弃用,您应该改用 ContextCompat.getDrawable(context, color)

另外,如果您通过 findDrawableByLayerId() 获得 LayerDrawable,那么您必须为此调用 view.setBackground(layerDrawable)生效。或者,通过 view.getBackground() 实例化 layerDrawable 也可以。

关于android - 以编程方式更改图层列表中形状的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163918/

相关文章:

android - 更改分隔线颜色或 Android DatePicker 对话框的主题

android - 为膨胀的 RadioGroup 创建 onChangeListener

Android:可见 viewpager 选项卡包含上一个选项卡的 arraylist 数据

android - Sqlite 检查数字是否为整数

android - Activity 应该是透明的,但有黑色背景

Android 编程按钮字体大小(以像素为单位)

android - 使 AppBarLayout/CollapsingToolbarLayout 对 ViewPager 中的 RecyclerView 中的滚动使用react

Android - Google Maps API v2 - SupportMapFragment 错误

Android:从另一个 Activity 返回时避免调用 onCreate()

java - 将复杂的 json 转换为简单的 Android POJO 文件的简单方法