我使用Android Studio实现导航抽屉,但是我无法更改用于显示当前所在部分的蓝色颜色。
我尝试了很多方法,目前正在使用以下样式:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@color/selected" />
<item android:state_pressed="true" android:drawable="@color/highlight" />
</selector>
我还尝试了state_checked
。在这种情况下,state_pressed
可以起作用,但是当前选定的项仍然是蓝色。
编辑:
我仔细检查了一下,在创建适配器时传递的上下文是getActionBar().getThemedContext()
,因此我认为如果我能找到正确的属性来分配给我的操作栏样式,我就可以从那里更改它。我已经尝试了几个不同的属性,但都没有成功。有人知道确切的属性吗?
我也意识到,如果我把
<item name="android:activatedBackgroundIndicator">@drawable/nav_listview_selector</item>
放在主题的主要部分,并将getActionBar().getThemedContext()
更改为getActivity.getBaseContext
,那么我就可以更改颜色,但我不认为这是正确的方法。我认为应该使用主题化的上下文。因此,如果有人知道activatedBackgroundIndicator
应该放在哪里,以便在getActionBar.getThemedContext()
中使用,请告诉我。
编辑2:
因此,用于列表视图的文本视图是 SDK 中的一个视图,它看起来像这样:
<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="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
/>
我尝试在主题级别修改"?android:attr/activatedBackgroundIndicator"
,但它对选中/已选/激活状态没有影响,但对按下状态有影响。有人知道这是为什么吗?我该如何改变它?
state_selected
(除了您提到的checked
和pressed
之外)+ListView.setItemChecked
。这花费了我很长时间,所以我可能定义了太多状态。 - velis