Questa domanda è stata posta molto su SO e ho fatto riferimento a tutte le risposte. Sono ancora lasciato con lo sfondo blu Holo predefinito per gli elementi selezionati nel mio cassetto di navigazione. Sono nuovo di Java e sono confuso circa la parte "contesto" di .setAdapter()
.
Il mio progetto è una singola attività con più frammenti scambiati utilizzando il cassetto di navigazione.Colore di sfondo personalizzato per l'elemento selezionato con "activeBackgroundIndicator" Cassetto di navigazione
Ecco il mio adattatore:
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);
Il contesto ecco che arriva dal cassetto di navigazione "precotti" in Android Studio. Ho pensato che questa sarebbe stata la risposta Navigation Drawer item background colour for selected item. Così ho cambiato il mio contesto in getActivity().getBaseContext(),
, ma questo non ha cambiato nulla.
Il mio tema (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
a dir 'drawable':
<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>
non so che di quegli stati di cui sopra dovrebbe essere utilizzato, così ho aggiunto tutti quelli che ho potuto trovare.
Infine, quando viene selezionato un articolo, viene chiamato mDrawerListView.setItemChecked(position, true);
.
Tutto funziona, tranne lo stile tema personalizzato. (min API = 11, testing su API 17 AVD)
Grazie! Non posso credere di non averlo incontrato in altre risposte. Precedentemente avevo 'android: background =? Android: activatedBackgroundIndicator'. – Flash
INFINE! grazie amico .. –
questa è la risposta più semplice e chiara a questo Q on SO. – u2tall