【问题标题】:Android: Can I re-use a layer-list?Android:我可以重复使用层列表吗?
【发布时间】:2014-07-31 23:28:59
【问题描述】:

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

【问题讨论】:

    标签: android xml code-reuse layer-list


    【解决方案1】:

    而不是将整个层列表放在item 的块中。为 layer-list 创建一个单独的文件,并在选择器项中将其设置为可绘制对象。

    示例:

        <?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>
    

    旁注:

    确保您的选择器中有一个默认的按下可绘制对象,否则选择器将不起作用。

    【讨论】:

      【解决方案2】:

      是的,任何可绘制对象都可以在选择器中重复使用。

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

      <item android:state_xxx android:drawable="@drawable/the_resource" />
      

      【讨论】:

        猜你喜欢
        • 2015-04-07
        • 1970-01-01
        • 2012-02-01
        • 1970-01-01
        • 2023-04-10
        • 2019-11-04
        • 2023-03-16
        • 2011-11-28
        • 2022-12-11
        相关资源
        最近更新 更多