El estilo de la casilla de verificación en la vista de lista es incorrecto

Tengo un problema con el estilo en mis casillas de verificación que aparecen en listas. El tema que mi aplicación utiliza es Holo, pero las casillas de verificación aparecen con el estilo antiguo. Las casillas de verificación que aparecen en otro lugar se ven bien. No estoy haciendo nada extravagante como crear mi propio estilo. Capturas de pantalla:

Introduzca aquí la descripción de la imagen

Se supone que las casillas de verificación se parecen a las de la imagen correcta. Esto está en v4.0.3. Las casillas de verificación se ven como deberían en otro dispositivo que probé con v4.4.2.

XML para la fila listview:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <CheckBox android:id="@+id/ListRow_Task_TaskComplete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="6sp" android:focusable="false" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="7dip" android:paddingBottom="7dip" android:layout_toRightOf="@+id/ListRow_Task_TaskComplete" android:layout_centerVertical="true" > <TextView android:id="@+id/ListRow_Task_Name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" /> // next two textviews are programmatically hidden right now <TextView android:id="@+id/ListRow_Task_Deadline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textSize="12sp" /> <TextView android:id="@+id/ListRow_Task_Tags" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/icon_tag" android:drawablePadding="4dip" android:textSize="12sp" /> </LinearLayout> </RelativeLayout> 

¿Cómo puedo hacer que las casillas de verificación a la izquierda parezcan que se supone que?

Copie las imágenes de la casilla de verificación Holo de la carpeta extraíble de Android para todos los dpis y resoluciones. A continuación, establezca el atributo android: button para el nuevo selector xml. De esta manera usted tendrá el control completo de cómo se ve en el dispositivo de destino.

 <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_checked="true" android:state_focused="true" android:drawable="@drawable/btn_check_on_focused_holo_light" /> <item android:state_checked="false" android:state_focused="true" android:drawable="@drawable/btn_check_off_focused_holo_light" /> <item android:state_checked="false" android:drawable="@drawable/btn_check_off_holo_light" /> <item android:state_checked="true" android:drawable="@drawable/btn_check_on_holo_light" /> </selector> 

Recientemente me encontré con el mismo problema y encontré solución real, no sólo una solución.

Cuando infla sus vistas en el método getView() :

public View getView(int position, View convertView, ViewGroup parent) { return inflater.inflate(R.layout.list_item, parent, false); }

Debe asegurarse de que el inflador que utiliza contiene el contexto de la actividad y no el contexto de la aplicación porque el contexto de la actividad es consciente del tema que utiliza y la aplicación no.

Así que asegúrese de crear inflar de una de las siguientes maneras o similares:

  • LayoutInflater.from(activity);
  • getLayoutInflater(); // from within activity
  • LayoutInflater.from(parent.getContext());

Para comprobar rápidamente esta solución, simplemente reemplace:

return inflater.inflate(R.layout.list_item, parent, false);

con:

return LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);

Yo también tuve este problema. Estoy usando Samsung Galaxy S4, y CheckBox en mi aplicación aparece tipo de escuela antigua. Si ejecuto la misma aplicación en "Android Emulator", se ve muy bien como yo quiero.

Lo mejor que te sugiero, no te preocupes. Simplemente cargue la aplicación en el mercado y debería estar bien.

Intenta establecer la variable targetSdkVersion en tu archivo AndroidManifest.xml a la más reciente (asegúrate de tener la versión sdk descargada):

 android:targetSdkVersion="19" 
  • Obtener contacto Foto basada en Teléfono de contacto Android - Ejemplo de trabajo
  • Lista de visualización de Android usando expandibleListView
  • Eliminar lista de elementos con Diapositiva, como Gmail
  • Cómo configurar la fuente personalizada para android listview?
  • ¿Cómo actualizar dinámicamente un ListView con un adaptador personalizado?
  • ListView.addFooterView () no funciona si no hay elementos en listview
  • EditText de Focusable en ListView y onItemClick
  • ListView onScroll añadir más elementos
  • No se actualiza la vista de lista de Android
  • Cómo intercambiar elementos ListView con animación?
  • Actualizar Android ListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.