5

我正在尝试更改按钮的背景以显示正在运行的后台进程的进度。我正在使用由两种颜色组成的可绘制对象,所以现在我需要以编程方式更改<item>以下图层列表中这些 s 的顶部和底部属性:

<?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 代码中修改它们。

4

2 回答 2

0

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

于 2013-08-10T15:17:27.083 回答
0

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

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

然而,更好/更简单的方法可能是创建您自己的 Drawable 类,这将相当简单,因为您只有两个矩形要绘制。

于 2013-08-10T17:10:14.740 回答