以编程方式更改<item>属性</item>

时间:2013-08-10 13:55:23

标签: android android-layout

我正在尝试更改按钮的背景,以显示正在运行的后台进程的进度。我正在使用由两种颜色组成的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代码修改它们。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

无论如何改变XML都无济于事,因为Android在运行时不使用它们。相反,请查看LayerDrawable,因为这是从XML创建并在运行时使用的内容。

所以基本上你可以这样做并从那里继续: LayerDrawable ld =(LayerDrawable)mButton.getBackground();

更好/更简单的方式但是可能会创建自己的Drawable类,因为你只有两个要绘制的矩形,所以这很简单。