在为Buttons和ListView项目实现选择器时,我一直发现我想为state_pressed和state_focused重用相同的项目/背景。
是否可以重复使用?
而不是复制XML'代码'e.g。这是我的state_pressed'代码' - 我怎样才能让state_focused使用相同的代码块#39;没有重复这一切?
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- PDS: Side lowlight lines Inset so hidden underneath solid colour -->
<item android:bottom="0dp" android:right="0dp" android:top="0dp" android:left="0dp">
<shape>
<solid android:color="#00000000" />
<stroke android:color="@color/butGreySelectFrame" android:width="4dp"/>
<corners android:radius="4dp" />
</shape>
</item>
<!-- PDS: Solid colour -->
<item android:left="4dp" android:right="4dp" android:top="4dp" android:bottom="4dp">
<shape>
<solid android:color="@color/butGreySelectBack" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</layer-list>
</item>
答案 0 :(得分:7)
是的,任何drawable都可以在选择器中重用。
只需为layer-list
创建单独的文件,然后使用
<item android:state_xxx android:drawable="@drawable/the_resource" />
答案 1 :(得分:2)
而不是将整个图层列表放在item
的块中。为layer-list创建一个单独的文件,并在选择器项中将其设置为drawable。
示例:强>
<?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/layer-list"/>
<item android:drawable="@drawable/layer-list_default"/> //this is the default state
</selector>
旁注:
确保您的选择器中有默认的press drawable,否则选择器将无效。