【问题标题】:ListView Set Checked Item Background colorListView 设置选中项背景颜色
【发布时间】:2012-05-26 14:14:25
【问题描述】:

我为表格设计了一个两窗格的 UI。在左窗格中,我正在显示列表视图,在右窗格中,我正在显示列表详细信息。我想将用户单击的列表行显示为选中状态,并将其显示在右窗格中。

所以我设置下面的代码来选择项目。

 android:choiceMode="singleChoice"
 android:background="@drawable/selector_list_view"

列表布局在下面的布局文件中。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="1dp"
android:background="@drawable/bg_dialog_fragment">


    <Button     
        android:id="@+id/SortByTitle"
        android:layout_width="0dip"
        android:textColor="@color/solid_black"
        android:background="@drawable/sort_button_selected"
        android:layout_height="wrap_content"
        android:layout_marginRight="0dip"
        android:paddingTop="5dip"
        android:paddingBottom="5dip"
        android:paddingRight="8dip"
        android:textSize="15sp"
        android:textStyle="bold"
        android:layout_weight="0.5"
        android:text="@string/project"
        android:drawablePadding="5dip"
        android:drawableRight="@drawable/up_arrow"/>
    <Button
        android:id="@+id/SortByDate" 
        android:textColor="@color/solid_black"
        android:background="@drawable/sort_button_unselected"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:paddingTop="5dip"
        android:layout_marginLeft="0dip"
        android:paddingBottom="5dip"
        android:textStyle="bold"
        android:textSize="15sp"
        android:layout_weight="0.5"
        android:drawablePadding="5dip"
        android:paddingRight="8dip"
        android:text="@string/due_date"/>
</LinearLayout>

<TextView
    android:paddingRight="1dp"        
    android:layout_marginRight="1dp"
    android:id="@+id/TextViewTitle"
    style="@style/title_style"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/SortOrder"
    android:text="@string/workflow_incourt" />

  <RelativeLayout
    android:layout_marginRight="1dp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/SearchFooter"
    android:layout_below="@+id/TextViewTitle"
    android:background="@color/solid_white"
   >

    <ListView
        android:id="@+id/ListViewProject"
        style="@style/listview_style"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:choiceMode="singleChoice"
        android:background="@drawable/selector_list_view" />

</RelativeLayout>

而drawable是

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_checked="true" android:state_focused="true" android:drawable="@android:color/background_dark" />
<item android:state_checked="true" android:state_focused="false" android:drawable="@android:color/background_dark" />
<item android:state_selected="true" android:drawable="@android:color/background_dark"/>
<item android:state_checkable="true" android:drawable="@android:color/background_dark"/>

但它仍然没有显示选中的列表行。我还需要做什么才能实现这一目标。

还附上了所选项目的屏幕截图。

【问题讨论】:

    标签: android list


    【解决方案1】:

    我认为您可以仅在一个变量中跟踪您选择的项目 ID。然后在:

    • 如果 ID 与您设置的存储的 ID 匹配(例如红色),则获取适配器的视图
    • OnListItemClickListener 您通过用新 ID ref 替换旧 ID 来删除旧 ID

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 2013-08-06
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      相关资源
      最近更新 更多