如何以编程方式更改图层列表中形状的颜色(#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>
解决方法
首先,您需要为您分配ID到层列表项.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- First assign id to the list item--> <item android:id="@+id/your_shape"> <shape android:shape="rectangle"> <solid android:color="#000000" /> </shape> </item> <item android:left="5dp"> <shape android:shape="rectangle"> <solid android:color="@color/bg" /> </shape> </item> </layer-list>
然后通过id获得你的形状.
LayerDrawable shape = (LayerDrawable) getResources().getDrawable(R.drawable.your_shape)
你可以通过调用来改变形状的颜色
shape.setColor(Color.Black); // changing to black color
编辑
由于getDrawable()已被弃用.使用以下代码行.
LayerDrawable shape = (LayerDrawable) ContextCompat.getDrawable(YourActivity.this,R.drawable.your_shape)