这个问题在SO上被问了很多次,我参考了所有的答案。但是在我的导航抽屉中,选定项仍然使用默认的Holo蓝色背景。我是Java的新手,对于
我的项目是一个单Activity,通过导航抽屉来切换多个片段。
这是我的适配器:
.setAdapter()
中的"context"部分感到困惑。我的项目是一个单Activity,通过导航抽屉来切换多个片段。
这是我的适配器:
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上测试)
android:background=?android:activatedBackgroundIndicator
。 - Flash