我需要能够为我的项目中的按钮提供动态行为。到目前为止,我得到的最接近的是使用这样的 XML:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/mainmenu_button_pressed" />
<item android:state_enabled="false" android:drawable="@drawable/mainmenu_button_disabled" />
<item android:drawable="@drawable/mainmenu_button" />
</selector>
这正是诀窍,但正如问题主题所述,我的项目需要它是动态的,我将解释我的意思......
这个应用程序有一个介绍菜单,几个选项上有不同的图像。根据运行时用户做出的选择(在此菜单之前),我需要能够为按钮提供一组不同的图像。理想的方法是:
<item android:state_pressed="true" android:drawable="%MAINMENU_BUTTON_PRESSED%" />
所以我可以设置 %MAINMENU_BUTTON_PRESSED 并且它会使用集合 A (A_mainpressed.png) 或 B (B_mainpressed.png) 而不需要额外的编码。
我知道执行此操作的可能正确方法是使用 OnClick 函数并以编程方式执行所有操作。然而,考虑到对我的项目意味着大量的手动工作,我想首先确保确实没有办法创建动态 XML 并将其提供给按钮,因此它可以像那样工作(AFAIK 所有资源都已编译和因此不能在运行时修改,资产文件夹上的 XML 文件也不起作用,因为这些文件没有被编译,因此不会生成我可以提供的 ID)。
有什么方法可以实现这种行为,还是我应该吞下它并坚持使用 OnClick 方法?谢谢