我如何在 android 中以编程方式将 xml 资源转换为 int?

How can i convert xml resources to int programatically in android?

我在 drawable 中有一个 xml 文件,看起来像:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/green_button_unchecked" android:state_pressed="true"/>
<!--  pressed  -->
<item android:drawable="@color/green_button_unchecked" android:state_focused="true"/>
<!--  focused  -->
<item android:drawable="@color/green_button_unchecked" android:state_selected="true"/>
<!--  selected  -->
<item android:drawable="@color/gray_6"/>
<!--  default  -->
</selector>

我可以在 setBackgroundResource(drawable.xmlName);

中使用它

我们知道,setBackgroundResource()需要int类型的resouceId...

如果不允许我使用资源,我如何通过以编程方式创建 xml 来使用 setBackgroundResource() ??

我希望你能理解我的问题... 谢谢

我不确定你是如何以编程方式创建 XML 的,就像你想创建一个 Drawable 一样,你不需要 XML。

任何 XML 文件都有一个名称,IDE 创建一个包含所有文件 ID 的生成 class。

如果是可绘制对象,则为 R.drawable。 对于颜色,它是 R.color。 对于字符串 R.string.

所以如果你想按资源设置背景,你只需要使用setBackgroundResource(R.drawable.file_name)

如果您不想使用 XML,则必须手动创建 Drawable 对象,并改用 setBackgroundsetBackgroundDrawable。很麻烦,因为Drawable的种类很多。

矢量可绘制对象、渐变可绘制对象、分层可绘制对象、彩色可绘制对象等

你必须弄清楚你想要什么并手动创建它