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

时间:2014-06-11 02:51:45

标签: android xml code-reuse layer-list

在为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>

2 个答案:

答案 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,否则选择器将无效。