Android 改变<;项目>;属性以编程方式

Android 改变<;项目>;属性以编程方式,android,android-layout,Android,Android Layout,我试图更改显示正在运行的后台进程进度的按钮的背景。我正在使用一个由两种颜色组成的绘图表,因此现在我需要以编程方式更改以下图层列表中那些的顶部和底部属性: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="20dp"> &l

我试图更改显示正在运行的后台进程进度的按钮的背景。我正在使用一个由两种颜色组成的绘图表,因此现在我需要以编程方式更改以下图层列表中那些
的顶部和底部属性:

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


我无法选择
元素并从java代码中修改它们。

只需使用另一个项目值创建相同的xml文件,并为按钮设置新的背景。似乎您无法在运行时更改这些值。

更改XML无论如何都没有帮助,因为Android在运行时不使用它们。相反,请看一下,因为这是从XML创建并在运行时使用的

所以基本上你可以这样做,然后继续: LayerDrawable ld=(LayerDrawable)mButton.getBackground()


更好/更简单的方法是创建自己的可绘制类,这非常简单,因为您只有两个矩形可绘制。

为了显示后台任务的当前状态,我需要能够设置特定的值。这在另一个静态xml文件中是不可能的。自定义可绘制类是最好的解决方案。