6

我有以下 XML:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/customPlayerProgressBg">
    <shape>
        <gradient
                android:startColor="#FF999999"
                android:endColor="#FF999999"
        />
    </shape>
</item>

<item android:id="@+id/customPlayerProgressSecondary">
    <clip>
        <shape>
            <gradient
                    android:startColor="#FF5C3C68"
                    android:endColor="#FF5C3C68"
            />
        </shape>
    </clip>
</item>
<item
    android:id="@+id/customPlayerProgress"
>
    <clip>
        <shape>
            <gradient
                android:startColor="#FF5C3C68"
                android:endColor="#FF5C3C68"
            />
        </shape>
    </clip>
</item>

</layer-list>

我想通过 Java 代码更改“customPlayerProgress”和“customPlayerProgressSecondary”。那怎么能做到呢?

4

3 回答 3

9

假设您希望在将它们作为 Drawable 加载到您的应用程序后通过 Java 代码访问它们,您应该能够执行以下操作:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final LayerDrawable ld = (LayerDrawable) getResources().getDrawable(R.drawable.my_drawable);
    final ClipDrawable d1 = (ClipDrawable) ld.findDrawableByLayerId(R.id.customPlayerProgress);
    final ClipDrawable d2 = (ClipDrawable) ld.findDrawableByLayerId(R.id.customPlayerProgressSecondary);

    /* modify ld, d1 and d2 by calling their methods here */
}

另请参阅this以获得更多想法。

于 2012-01-23T20:24:02.837 回答
1

您不能在运行时更改生成的 XML 文件。

于 2012-01-23T19:43:01.313 回答
0

您可能熟悉DOM。您只需要修改更改,然后保存文件。

这是一篇可能会有所帮助的文章。

于 2012-01-23T18:44:36.543 回答