Color de fondo personalizado para el elemento seleccionado con "activatedBackgroundIndicator" Navigation Drawer

Esta pregunta se ha hecho mucho en SO, y he hecho referencia a todas las respuestas. Todavía me queda el fondo azul de Holo predeterminado para los elementos seleccionados en mi cajón de navegación. Soy nuevo en Java y estoy confundido acerca de la parte "context" de .setAdapter() .
Mi proyecto es una sola actividad con múltiples fragmentos intercambiados usando el cajón nav.

Aquí está mi adaptador:

 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); 

El contexto aquí viene del cajón de navegación "pre-cocinado" en Android Studio. Pensé que esto sería el color de fondo del artículo del cajón de la navegación de la respuesta para el artículo seleccionado . Así que cambié mi contexto a getActivity().getBaseContext(), pero eso no cambió nada.

Mi 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 en 'drawables' dir:

 <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> 

No sé cuál de esos estados supuestamente se supone para ser utilizado, así que agregué todos ellos que podría encontrar.
Finalmente, cuando se selecciona un elemento mDrawerListView.setItemChecked(position, true); se llama.
Todo funciona, excepto para el estilo de tema personalizado. (API min = 11, pruebas en API 17 AVD)

Me he topado con este problema exacto. El problema es que el fondo de R.layout.fragment_navigation_drawer_list_item es lo que necesita ser cambiado a su drawable. Simplemente añada android:background="@drawable/activated_background" al diseño.

No pude encontrar una respuesta clara y completa a esta pregunta, así que aquí está:

Paso 1. Especifique la distribución de elementos de lista que su adaptador utilizará, en este ejemplo estamos especificando: R.layout.fragment_navigation_drawer_list_item

Al igual que:

 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), }))` 

Paso 2. Cree y personalice fragment_navigation_drawer_list_item.xml para especificar un drawable que tendrá un selector así: android:background="@drawable/activated_background" Ejemplo completo:

 <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:minHeight="?android:attr/listPreferredItemHeightSmall" android:background="@drawable/activated_background" /> 

Paso 3. Cree y personalice el selector en su archivo activated_background.xml como en la pregunta, se verá así:

 <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> 
  • Temas de Android dificultan la implementación de la más simple: personalizado por color de tema
  • Cambiar el color de la ventana de inicio de la aplicación
  • AS editor de temas no se muestra la vista previa
  • ¿Por qué mi 'actionBarTabStyle' personalizado no anula el estilo / tema predeterminado?
  • Android: Conjunto de cuentas Juego de luz
  • ¿Cómo puedo diseñar un conmutador Android?
  • Copiar tema de otra aplicación
  • Android Actionbar navegación spinner color de texto
  • Actividad translúcida llenando toda la pantalla
  • Error de atributo al cambiar a Diseño de material
  • Context.obtainStyledAttributes () warning
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.