我正在尝试更改solid
中shape
的{{1}}颜色。
Fragment
我似乎无法从我的代码访问它,我已经在堆栈溢出上尝试了以下答案:
Set android shape color programmatically
How to change shape color dynamically?
Change shape solid color at runtime inside Drawable xml used as background
这些都没有奏效或过时。
我尝试更改颜色的片段:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/icon_circle_background">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
...>
<solid android:color="@color/md_cyan_400"/>
</shape>
</item>
<item
...
</item>
</layer-list>
答案 0 :(得分:1)
View v = findViewById(R.id.layout_id);
LayerDrawable shape= (LayerDrawable)v.getBackground();
shape.setColor(Color.Black);
答案 1 :(得分:1)
使用它:
GradientDrawable bgShape = (GradientDrawable)view.getBackground().getCurrent();
bgShape.setColor(Color.BLACK);
.getCurrent给出选定的可绘制图层列表
使用它不会抛出java.lang.ClassCastException:android.graphics.drawable.GradientDrawable无法强制转换为android.graphics.drawable.ShapeDrawable异常。
它对我来说非常适合。