如何更改导航栏中的列表选定项目颜色?

时间:2014-12-22 11:05:33

标签: android listview android-studio navigation-drawer

我从导航浏览器的Android Studio示例开始。我正在定制我想要的一切,一切都很好,但我找不到如何在导航抽屉中更改所选的项目颜色......现在它是绿色的,我无法改变它。

我尝试使用选择器drawable但是没办法,我设法改变了整个背景,但没有选择那个。

很抱歉,如果这是一个菜鸟问题,但我昨天花了几个小时在谷歌和这里没有找到:/

Green color i want to change


最后,我设法让它发挥作用。 问题是“android.R.layout.simple_list_item_activated_1”。

这是一个内置xml的android,所以你无法处理你想要的颜色。

所以我创建了一个名为nav_drawer_layout.xml的文件,其中包含与“android.R.layout.simple_list_item_activated_1”文件相同的文件。

然后我调整它改变 android:background 属性,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:background="@drawable/nav_drawer_colors"
    android:minHeight="?android:attr/listPreferredItemHeightSmall" />

它指的是您必须创建的nav_drawer_colors.xml 选择器

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

selected_drawer,pressed_drawer和backgroung_drawer一如既往地在values \ colors.xml中定义。

现在一切正常,除了影子效果无处不在,但不在listview中^^ 编辑:只需在片段导航抽屉布局(fragment_navigation_drawer.xml)中指定背景颜色并删除 <item android:drawable="@color/backgroung_drawer" />文件中的nav_drawer_colors.xml:)

希望它能帮助其他有同样问题的人:)

3 个答案:

答案 0 :(得分:6)

通过编码,您可以通过单击ListView项目来实现:

int save = -1;
listview.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO Auto-generated method stub

                    parent.getChildAt(position).setBackgroundColor(
                            Color.parseColor("#A9BCF5"));

                    if (save != -1 && save != position) {
                        parent.getChildAt(save).setBackgroundColor(
                                Color.parseColor("#d6e6ff"));
                    }

                    save = position;
          });

使用选择器:

select.xml文件夹中创建一个名为drawable的文件。

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

现在将此文件设置为xml文件中ListView的Listselector。像,

android:listselector="@drawable/select"

或用作背景

android:background="@drawable/select"

答案 1 :(得分:2)

在drawble中创建xml文件

<强> list_selector.xml

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

</selector>

<强> list_item_bg_normal.xml

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

  <gradient
      android:startColor="@color/list_background_pressed"
      android:endColor="@color/list_background_pressed"
      android:angle="90" />

</shape>

<强> list_item_bg_pressed.xml

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

 <gradient

      android:startColor="#aed200"

      android:endColor="#aed200"

      android:angle="90" />

</shape>


<ListView
        android:id="@+id/listview_drawer"
        android:layout_width="match_parent"
         android:layout_gravity="start"
        android:layout_height="match_parent"

        android:background="@drawable/list_selector"
        android:dividerHeight="1dp" />

答案 2 :(得分:1)

试试这个:

1.在drawable文件夹中创建list_selector.xml

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

2.然后将list_selector.xml设置为listview自定义设计布局中的背景。

android:background="@drawable/list_selector"