关于SO的问题已经问了很多,我已经引用了所有答案。抽屉导航上的选定项目仍保留默认的Holo蓝色背景。我是Java的新手,我对.setAdapter()
的“上下文”部分感到困惑。
我的项目是一个单个 Activity ,使用抽屉导航交换了多个 fragment 。
这是我的适配器:
mDrawerListView.setAdapter(new ArrayAdapter<String>(
// First parameter - Context
getActionBar().getThemedContext(),
// Second parameter - Layout for the row
R.layout.fragment_navigation_drawer_list_item,
// Third parameter - ID of the TextView to which the data is written
android.R.id.text1,
// Forth - the Array of data
new String[]{
getString(R.string.title_section1),
getString(R.string.title_section2),
getString(R.string.title_section3),
getString(R.string.title_section4),
}));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
这里的上下文来自Android Studio中的“预煮”抽屉导航。我以为这就是答案Navigation Drawer item background colour for selected item。因此,我将上下文更改为
getActivity().getBaseContext(),
,但这没有任何改变。我的主题(
styles.xml
):<resources>
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
<item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<!-- Navigation Drawer styling -->
<style name="NavDrawerItemSelected" parent="AppBaseTheme">
<item name="android:activatedBackgroundIndicator">@drawable/activated_background</item>
</style>
</resources>
'drawables'目录中的
activated_background
:<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@color/green" />
<item android:state_selected="true" android:drawable="@color/green" />
<item android:state_pressed="true" android:drawable="@color/green" />
<item android:state_checked="true" android:drawable="@color/green" />
<item android:drawable="@android:color/transparent" />
</selector>
我不知道应该使用上述哪个状态,所以我添加了所有可以找到的状态。
最后,在选择项目时
mDrawerListView.setItemChecked(position, true);
被调用。一切正常,除了自定义主题样式。 (最小API = 11,在API 17 AVD上进行测试)
最佳答案
我遇到了这个确切的问题。问题是R.layout.fragment_navigation_drawer_list_item
的背景是需要更改为可绘制对象的背景。只需将android:background="@drawable/activated_background"
添加到布局中即可。
关于android - 带有 "activatedBackgroundIndicator"抽屉导航的所选项目的自定义背景色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23112376/