8

Ich habe ein Problem mit dem Styling in meinen Checkboxen, die in Listviews erscheinen. Das von meiner App verwendete Thema ist Holo, aber die Kontrollkästchen erscheinen im alten Stil. Checkboxen, die anderswo erscheinen, sehen gut aus. Ich mache nichts Besonderes, wie zum Beispiel meinen eigenen Stil zu kreieren. Screenshots:Checkbox-Stil in Listview ist falsch

enter image description here

Die Kontrollkästchen werden soll, wie sie auf dem rechten Bild sehen. Dies ist auf v4.0.3. Die Kontrollkästchen sehen aus wie auf einem anderen Gerät, das ich mit v4.4.2 ausprobiert habe.

XML für Listview-Reihe:

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

Wie kann ich die Kontrollkästchen auf der linken Seite aussehen zu lassen wie sie sollen?

+0

hat gemustert u der Hauptgrund, aus ?! Ich habe ein ähnliches Problem und ich frage mich nur, welches Telefon macht dir witzige Probleme .. Samsung Galaxy S4, das ist .. – Ewoks

+0

Ich erinnere mich nicht vollständig an den Grund oder wenn ich es sogar herausgefunden. Ich habe gerade eine Kopie der Checkbox Art von Holo benutzt. Sorry ... – JustcallmeDrago

+0

Das Telefon, das ich benutzte, sah nicht richtig aus war ein Galaxy S2 und das, das richtig funktionierte, war ein Nexus 7 – JustcallmeDrago

Antwort

3

Kopieren Sie die Holo Checkbox Bilder aus dem Android ziehbar Ordner für alle Pulverinhalatoren und Beschlüsse. Setzen Sie dann das Attribut android: button auf den neuen Selektor xml. Auf diese Weise haben Sie vollständige Kontrolle darüber, wie es auf dem Zielgerät aussieht.

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

Um konsistentes Aussehen in allen Geräten und alle Version zu haben, Sie müssen es wie oben erwähnt anpassen. –

+0

Dies scheint die beste Lösung zu sein, insbesondere unter Berücksichtigung von @ CRSardars Kommentar. Vielen Dank. – JustcallmeDrago

+0

das hilft nicht, @JustcallmeDrago, hat es für Sie funktioniert? –

0

Ich hatte auch dieses Problem. Ich benutze Samsung Galaxy S4 und CheckBox in meiner App erscheint Old School-Typ. Wenn ich die gleiche App in "Android Emulator" laufe, scheint es so, wie ich es möchte.

Beste Sache, die ich vorschlagen, mach dir keine Sorgen darüber. Laden Sie einfach die App auf den Marktplatz und es sollte in Ordnung sein.

+0

Samsung Galaxy S4, das ist !!! der Gewinner Telefon .. für alle Probleme ... – Ewoks

0

Versuchen Sie, die targetSdkVersion in AndroidManifest.xml Datei auf die neueste einer Einstellung (stellen Sie sicher, dass die SDK-Version heruntergeladen haben):

android:targetSdkVersion="19" 
+0

das kann eigentlich keine Quelle des Problems sein, weil er gleiche App mit dem gleichen Manifest auf zwei verschiedenen Geräten versucht .. – Ewoks

3

ich über das gleiche Problem vor kurzem kam und wirkliche Lösung gefunden, nicht nur eine Abhilfe.

Wenn Sie Ihre Ansichten in getView() Methode aufblasen:

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

Sie müssen sicherstellen, dass inflater, die Sie Aktivität Kontext verwenden enthält und nicht die Anwendungskontext, weil Aktivität Kontext bewusst das Thema ist, dass Sie verwenden und Anwendung ist nicht.

So stellen Sie sicher inflater in einem der folgenden oder ähnliche Arten erstellen:

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

Um schnell diese Lösung zu überprüfen, einfach ersetzen :

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

mit:

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

+0

So funktioniert super, danke !!! – Jokus