1

我开发了一个带有 DrawerLayout 的应用程序。

我的问题是ListView,当我点击一个项目时,他textColor变成白色,但背景仍然透明并且ListView背景是白色的。所以选定的文本是不可读的。

我搜索了解决方案,并尝试了许多解决方案,但没有一个有效。我只想更改背景颜色,#FFCCCCCC例如在选择项目时。

你有什么主意吗 ?

抽屉布局

    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFDDDDDD"/>

    <!-- The navigation drawer -->
    <ListView android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#FFF"/>

</android.support.v4.widget.DrawerLayout>

导航列表

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_margin="15dp" />

    <TextView 
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:layout_gravity="center_vertical"/>

</LinearLayout>

如果您有任何解决方案...谢谢:)

编辑 :

截屏

4

4 回答 4

4

在为列表项的背景定义选择器时,也要有一个部分android:state_activated="true"。回复:httpsListView#setItemChecked() ://stackoverflow.com/a/15917947/954643调用实际上并没有设置选定状态,这很烦人......但我想这就是为什么他们有一个单独的#setSelection. 希望文档更清楚地了解它放置物品的状态。

于 2013-10-19T04:45:35.857 回答
3

您必须为android:background和设置选择器android:textColor。有关详细信息,请参阅颜色状态列表

导航列表

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background_selector"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_margin="15dp" />

    <TextView 
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textColor="@drawable/color_selector"
        android:layout_gravity="center_vertical"/>

</LinearLayout>

背景选择器.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/holo_blue_light" android:state_pressed="true" />
    <item android:drawable="@color/holo_blue_light" android:state_selected="true" />
    <item android:drawable="@color/blue" />
</selector>

color_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false" android:color="#ffffff" />
    <item android:state_focused="true" android:state_pressed="true" android:color="#000000" />
    <item android:state_focused="false" android:state_pressed="true" android:color="#000000" />
    <item android:color="#ffffff" />
</selector>
于 2013-08-05T20:44:55.107 回答
0

在您的适配器上:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ...

    rowView.setBackgroundResource(R.drawable.YOUR_SELECTOR);
    rowView.setLayoutParams(new ListView.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));

    return rowView;
}
于 2014-07-29T19:39:03.800 回答
0

菜单项背景应该指向一个选择器,而不是一个简单的可绘制对象或颜色,大致如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/holo_blue_light" android:state_pressed="true" />
    <item android:drawable="@color/holo_blue_light" android:state_selected="true" />
    <item android:drawable="@color/menu_background" />
</selector>
于 2013-05-26T13:26:18.663 回答