【问题标题】:ListView Item shadow + custom selectorListView 项目阴影 + 自定义选择器
【发布时间】:2013-06-26 15:04:22
【问题描述】:

我想在 ListView 项目上投下阴影并应用自定义选择器。但我不知道如何同时应用它们..

这里是 shadow.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item >
        <shape android:shape="rectangle">
              <solid android:color="@android:color/darker_gray" />
        </shape>
    </item>
     <item 
         android:right="1dp" 
         android:bottom="2dp">        
        <shape android:shape="rectangle">
              <solid android:color="@android:color/white"/>
        </shape>
     </item>         
</layer-list> 

还有自定义选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item  
    android:state_pressed="false" 
    android:drawable="@android:drawable/color/white" />  
<item 
    android:state_pressed="true"
    android:drawable="@drawable/pressed_background_blue" />  
</selector>

我尝试将选择器应用于整个 ListView android:listSelector="@drawable/selector.xml" 并将阴影应用于 ListView 项目 android:background="@drawable/shadow.xml" 但在这种情况下,ListView 项目将有阴影但不会对触摸做出反应。

提前谢谢你

【问题讨论】:

  • 工作..谢谢^_^

标签: android listview layout selector shadow


【解决方案1】:

我找到了解决方案。没有出现选择器的原因是Android ListView 结构。如果将背景设置为 List ItemView,它会与 Selector 重叠,因此您看不到它。解决方案是在 Click 时使 ItemView 背景透明。

这里是listview_item_shadow.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
              <solid android:color="@android:color/darker_gray" />
        </shape>
    </item>
     <item 
         android:right="1dp" 
         android:bottom="2dp">        
        <shape android:shape="rectangle">
              <solid android:color="@android:color/white"/>
        </shape>
     </item>         
</layer-list>

现在您应该在 ItemView 的选择器中使用它! - listview_item_backgroundstate.xml 您需要将 listview_item_backgroundstate.xml 设置为 ListView 项目的背景

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@android:color/transparent"></item>
    <item android:state_selected="true" android:drawable="@android:color/transparent"></item>
    <item android:state_focused="true" android:drawable="@android:color/transparent"></item>
    <item android:drawable="@drawable/listview_item_shadow"></item>
</selector>

最后你必须像ListView一样设置custom_selector.xmlandroid:listSelector="@drawable/custom_selector.xml"

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item  
    android:state_pressed="false" 
    android:drawable="@android:drawable/color/white" />  
<item 
    android:state_pressed="true"
    android:drawable="@drawable/pressed_background_blue" />  
</selector>

欲了解更多信息,请阅读这篇很棒的tutorial

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多