我想更改Android中导航抽屉中所选项目的默认颜色(蓝色)。我已经让它在过去的项目中工作,但我不能参与我目前正在进行的项目。
这是应用主题。
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
<item name="android:activatedBackgroundIndicator">@drawable/activated_background</item>
<item name="android:buttonStyle">@style/AppTheme.Button</item>
</style>
这是activated_background drawable。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@drawable/list_selected"/>
<item android:state_selected="true" android:drawable="@drawable/list_selected"/>
<item android:state_pressed="true" android:drawable="@drawable/list_selected"/>
</selector>
最后,这是导航抽屉片段。
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#cccc"
tools:context=".NavigationDrawerFragment" />
就像我说的,这对我来说很有用。我能想到的项目之间的唯一区别是之前,我的应用主题是继承自&#34; Theme.AppCompat&#34;这个项目的主题继承自&#34; android:Theme.Holo.Light.DarkActionBar&#34;。此外,我在我的新项目中使用v4支持片段,而在另一个项目中,我只是使用标准片段。
任何建议都将不胜感激。感谢。
答案 0 :(得分:1)
似乎问题是如何保留所选的ListView
中的项目,而不是实际上如何设置所选项目的结果背景。
有关如何更改ListView
项目的背景后,请参阅此优秀答案:
Android - Keep ListView's item highlighted once one has been clicked
基本的想法是,当点击项目时,你可以改变它的背景(或其他任何东西)。棘手的部分是您必须让列表适配器记住所选的行。否则当/如果您滚动列表/导航抽屉时,您将失去选择。
您需要在ListView
中设置自定义AppTheme
样式,并将android:listSelector
项目设置为@drawable/activated_background
。
如果您不希望整个应用程序使用该样式,只需在应用程序抽屉布局中为ListView
指定该样式,或者更简单地只设置android:listSelector
属性ListView
。 1}},甚至不打算定义一种风格。
答案 1 :(得分:1)
我明白了。我没有使用我的主题来尝试应用样式,而是为列表项创建了自己的xml布局,而不是使用默认值并从那里设置选择器。
这是列表项xml的样子。
<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:textColor="@drawable/list_txtcolor"
android:gravity="center_vertical"
android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:background="@drawable/activated_background"
android:minHeight="?android:attr/listPreferredItemHeightSmall">
</TextView>
如您所见,我只是将项目背景设置为我的选择器。
android:background="@drawable/activated_background"
再次,这是我的选择。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@drawable/list_selected"/>
<item android:state_selected="true" android:drawable="@drawable/list_selected"/>
<item android:state_pressed="true" android:drawable="@drawable/list_selected"/>
</selector>