Этот вопрос был задан очень много, и я ответил на все ответы. Я по-прежнему остался с голубым фоном по умолчанию для выбранных элементов в моем навигационном ящике. Я новичок в Java, и я смущен насчет "контекстной" части .setAdapter()
.
Мой проект - это одно действие с несколькими фрагментами, замененными с помощью навигационного ящика.
Вот мой адаптер:
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. Я думал, что это будет ответ Цвет фона элемента навигации для выбранного элемента. Поэтому я изменил свой контекст на 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>
activated_background
в каталоге 'drawables':
<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)