将ListView中的选择从橙色更改为绿色

jax*_*jax 22 android android-listview

如何对每个选定的列表项执行此操作.

我试过把它添加到 android:background

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" 
        android:state_pressed="false"
        android:drawable="@color/android_green" />
    <item android:state_focused="true" 
        android:state_pressed="true"
        android:drawable="@color/black_alpha" />
    <item android:state_focused="false" 
        android:state_pressed="true"
        android:drawable="@color/black_alpha" />
    <item android:drawable="@color/white_alpha" />
</selector> 
Run Code Online (Sandbox Code Playgroud)

但它不起作用,它改变了整个ListView.


仍然没有工作,这是我到目前为止

:: listview_background

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@color/black_alpha" />
    <item android:drawable="@color/white_alpha" />  
</selector> 
Run Code Online (Sandbox Code Playgroud)

::我的观点正在使用上述内容

<ListView android:id="@+id/list" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:layout_below="@+id/round"
    android:listSelector="@drawable/listview_background">
</ListView>
Run Code Online (Sandbox Code Playgroud)

问题是black_alpha将应用整个列表,而不仅仅是选定的列表项

Jay*_*ren 21

这是一篇关于如何使用带有列表的选择器的好文章.

而不是将其设置android:background为ListView,我相信你想设置android:listSelector如下所示:

<ListView android:id="@+id/list" 
      android:layout_width="fill_parent"
      android:layout_height="wrap_content" 
      android:layout_gravity="center"
      android:divider="@null" 
      android:dividerHeight="0dip"
      android:listSelector="@drawable/list_selector" />
Run Code Online (Sandbox Code Playgroud)


b-r*_*yce 8

Jax,你说的是:

问题是black_alpha将应用整个列表,而不仅仅是选定的列表项

我有同样的问题.在玩了一段时间后,我能够通过使用我想要的颜色的3x3 png图像而不是应用颜色来停止将颜色应用于整个列表.因此,出于某种奇怪的原因,如果你使用颜色你会得到奇怪的背景行为,当你使用png时,它工作正常.:S

所以这是解决它的一种方法.

- - -其他方式 - - - - -

当我将listView选择器设置为不具有以下任何状态时,我找到了最佳结果:

RES /抽拉/ list_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
</selector>
Run Code Online (Sandbox Code Playgroud)

然后我会处理列表项背景中的所有状态.不在选择器中.我发现我有更多的控制方式.

RES /颜色/ list_item_bg.xml

<?xml version="1.0" encoding="utf-8"?>
   <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false"
    android:state_pressed="false" 
    android:drawable="@color/list_item_black_translucent" />
<item android:state_pressed="true" 
    android:drawable="@color/light_green_accent_translucent" />
</selector>
Run Code Online (Sandbox Code Playgroud)

那么这是我的列表项:

RES /布局/ simple_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingRight="45dip"
android:paddingBottom="2dip"
android:layout_gravity="center_vertical"
android:background="@color/list_item_bg">
  <ImageView
    android:id="@+id/arrow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="8dip"
    android:src="@drawable/list_item_arrow" />
 <TextView
android:id="@+id/simple_list_item_label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textSize="12sp"
android:textColor="@color/list_label_color"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)