2017-01-30 81 views
0

我使用下面的代码,但它不能正常工作:如果我选择一个项目,背景会改变。但是,如果我只关注该项目而不选择它,背景也会发生变化。为什么?如何突出显示在ListView中按下的项目?

添加到我的列表视图:

android:listSelector="@drawable/bg_key" 

@绘制/ bg_key

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    android:id="@+id/myselector" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_activated="false" 
     android:drawable="@color/activated_color" /> 

</selector> 

color.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="activated_color">#1d1d1d</color> 
</resources> 
+0

也许使用'pressed'和'focused'状态? –

+0

@Rotwang我添加了state_pressed =“true”state_focused =“false”和view.setPressed(true);在onItemClick方法中,但它仍然不起作用 – xRobot

+0

'添加到我的列表视图...'不是每个项目的选择吗? –

回答

0

您可以突出显示/提供连锁反应您使用f列出项目ollowing:

在绘制创建一个选择item_ripple.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true"> 
     <shape> 
      <solid android:color="@color/activated_color"></solid> 
     </shape> 
    </item> 

    <item > 
     <shape> 
      <solid android:color="@android:color/transparent"></solid> 
     </shape> 
    </item> 

</selector> 

在绘制-V21创建一个选择item_ripple.xml

<?xml version="1.0" encoding="utf-8"?> 
<ripple 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@color/activated_color"> 

    <item 
     android:id="@android:id/mask" 
     android:drawable="@android:color/white" /> 
</ripple> 

你需要把这些选择添加为背景您的物品布局:

android:background="@drawable/item_ripple" 
+0

什么是可绘制的v21? – xRobot

+0

在res文件夹中创建一个新目录并将其命名为drawable-v21。这表示当前API版本的操作系统是否为<= 21,请考虑使用此文件夹中的资源(如果不存在),默认情况下使用可绘制文件夹下的资源。 –

0

您可以使用状态在你选择文件

/drawable/list_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:drawable="@android:color/holo_red_light" android:state_pressed="true"/> 

</selector> 

然后设置按照您的ListView属性

android:listSelector="@drawable/list_selector"