我正在尝试更改按钮的背景,以显示正在运行的后台进程的进度。我正在使用由两种颜色组成的drawable,所以现在我需要以编程方式更改以下layer-list中<item>
的顶部和底部属性:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:bottom="20dp">
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
</shape>
</item>
<item android:top="30dp">
<shape android:shape="rectangle" >
<solid android:color="#000000" />
</shape>
</item>
</layer-list>
我无法选择<item>
元素并从java代码修改它们。
答案 0 :(得分:0)
只需使用其他项目值创建相同的xml文件,并为按钮设置新背景。似乎您无法在运行时更改这些值。
答案 1 :(得分:0)
无论如何改变XML都无济于事,因为Android在运行时不使用它们。相反,请查看LayerDrawable,因为这是从XML创建并在运行时使用的内容。
所以基本上你可以这样做并从那里继续: LayerDrawable ld =(LayerDrawable)mButton.getBackground();
更好/更简单的方式但是可能会创建自己的Drawable类,因为你只有两个要绘制的矩形,所以这很简单。