Android:我可以重复使用图层列表吗?

Spa*_*yNZ 2 xml code-reuse android layer-list

在为Buttons和ListView项目实现选择器时,我一直发现我想为state_pressed和state_focused重用相同的项目/背景.

而不是重复XML'代码',是否可以重用?

例如,这是我的state_pressed'代码' - 如何让state_focused使用相同的'代码'而不重复它?

<?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>
Run Code Online (Sandbox Code Playgroud)

mat*_*ash 7

是的,任何drawable都可以在选择器中重用.

只需为其创建一个单独的文件layer-list,然后引用它

<item android:state_xxx android:drawable="@drawable/the_resource" />
Run Code Online (Sandbox Code Playgroud)