Cajón de navegación resaltar elemento seleccionado no funciona
Estoy tratando de resaltar el elemento de cajón de nav seleccionado, pero no funciona. Sólo se resalta al pulsar los elementos pero no permanece resaltado después de seleccionar el elemento.
Tengo el siguiente código:
- Enfoque de la aplicación universal de Android
- Cómo agregar imagen a spinner en Android
- Problemas al agregar una nueva aplicación de AdMob a Android
- FrameLayout layout_weight de forma programática
- Cómo establecer el tamaño mínimo y máximo de un ImageView en Android
El ListView:
<ListView android:id="@+id/drawer_listview" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:choiceMode="singleChoice" android:divider="@color/drawer_divider" android:dividerHeight="@dimen/drawer_divider_height" android:listSelector="@drawable/list_selector_holo_light" />
El Selector:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/transparent" android:state_window_focused="false"/> <item android:drawable="@drawable/list_selector_disabled_holo_light" android:state_enabled="false" android:state_focused="true" android:state_pressed="true"/> <item android:drawable="@drawable/list_selector_disabled_holo_light" android:state_enabled="false" android:state_focused="true"/> <item android:drawable="@drawable/list_selector_background_transition_holo_light" android:state_focused="true" android:state_pressed="true"/> <item android:drawable="@drawable/list_selector_background_transition_holo_light" android:state_focused="false" android:state_pressed="true"/> <item android:drawable="@drawable/list_activated_holo" android:state_activated="true" /> <item android:drawable="@drawable/list_focused_holo" android:state_focused="true"/>
Los drawables son archivos de 9 parches generados con Android Holo Colors .
En mi actividad:
mListView.setAdapter(mAdapter); mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); mListView.setItemChecked(1, true); // Testing mListView.setSelection(1); // Testing
Por lo que sé, state_activated="true"
en el selector es cuando el elemento listView está marcado / seleccionado. Pero no funciona.
Editar:
He definido android:background="@drawable/list_selector_holo_light"
para el diseño de la fila y ahora está funcionando, pero todavía no tengo idea de por qué listSelector no está funcionando.
- Grabación de la barra de herramientas en la barra de herramientas extendida
- ¿Cómo puedo ajustar RelativeLayout a la pantalla?
- Cómo crear un tema y estilo xml para el proyecto android
- Obtener las dimensiones de RelativeLayout
- Cómo abrir la navegación en lugar de mapview en android?
- Divide por error cero en archivo .xml
- Cuándo usar ImageButton en lugar de ImageView?
- Selector de textColor de Android
¿Qué versión de Android usas?
Creo que state_activated funciona para API de nivel 11 y superior.
He experimentado esto y con el fin de manejar Pre Honeycomb, creo un Adaptador personalizado para ListView y tener código siguiente en el método getView
:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { if (mListView.isItemChecked(position)) { holder.tvDrawerItem.setBackgroundColor(R.drawable.list_activated_holo); } else { holder.tvDrawerItem.setBackgroundColor(mContext.getResources().getColor(android.R.color.transparent)); } }
Addenda: soporte para Pre HoneyComb usando android support Library v4 .
Si usted supone que soporta Android 4 +, sólo tiene que comprobar Android Developer Muestra: http://developer.android.com/training/implementing-navigation/nav-drawer.html y marque drawer_list_layout. activatedBackgroundIndicator
es lo que usted necesita:
<TextView xmlns:android="http://schemas.android.com/apk/res/android" ... android:background="?android:attr/activatedBackgroundIndicator" android:minHeight="?android:attr/listPreferredItemHeightSmall"/>
¿Ha configurado el color de fondo en el elemento de la lista?
Si es así, ¿has android:drawSelectorOnTop="true"
?
drawerList.setItemChecked(currentPosition,true);
Donde drawerList
es la lista de NavigationBar