2016-08-05 43 views
1

Ich versuche, die Google Apps Fotoauswahl UI zu bekommen .. Verwenden Sie Appcompat Kontrollkästchen, um das mit Erfolg zu erreichen. Die Schritte arbeite ich an, 1. das Kontrollkästchen Hintergrund Legen Sie eigene kreisförmig Form 2. definieren eigene Form in xmlAngepasste kreisförmige Kontrollkästchen in Android

Das ist mein Kontrollkästchen xml ist aussieht,

<android.support.v7.widget.AppCompatCheckBox 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/checkBox" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      android:button="@drawable/custom_checkbox" 
      android:background="@drawable/checkbox_drawable" 
      /> 

Meine benutzerdefinierte Checkbox Hintergrund ,

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <stroke 
     android:width="1dp" 
     android:color="#78d9ff"/> 
    <solid 
    android:color="#79bfea"/> 
    </shape> 

Meine Checkbox Taste,

<selector> 
<item android:drawable="@drawable/checkbox_drawable" 
     android:state_checked="false"/> 
    <item android:drawable="@drawable/selected_check" 
     android:state_checked="true"/> 
</selector> 

Ich habe sogar von Android geändert: Hintergrund zu Android: Taste .. nichts gibt mir die kreisförmige Kontrollkästchen .. Jede Hilfe wird geschätzt? Soll ich eine schwebende Aktionsleiste verwenden? oder eine Aussicht? Irgendwelche Vorschläge ?

Antwort

1

Sie müssen Ihrem Zeichenbereich Größe geben, wenn Sie es für das Schaltflächenattribut verwenden möchten.

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> 
    <stroke 
     android:width="1dp" 
     android:color="#78d9ff"/> 
    <solid android:color="#79bfea"/> 
    <size 
     android:width="20dp" 
     android:height="20dp"/> 
</shape> 

Und gelten für CheckBox mit android:button.

Da dies ein Kontrollkästchen ist, sollten Sie den Selektor verwenden, um den Status zu aktivieren und zu deaktivieren.

Ein Beispiel für Selektor ist

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@drawable/normal" 
      android:state_checked="false"/> 
    <item android:drawable="@drawable/checked" 
      android:state_checked="true"/> 
    <item android:drawable="@drawable/normal"/> 
</selector> 
+0

Ich versuchte dies .. alle Drawables ausgegraut sind aber sichtbar .. nur klicken, wenn ich die Überprüfungsstatus ziehbar korrekt angezeigt wird. Ich muss etwas falsch machen ... keine Ahnung? – rana

+0

Versuchen Sie, innerhalb des Selektorblocks hinzuzufügen. Dies sollte für den Standardstatus sein. – Emma

+0

Wenn Sie die Frage aktualisieren möchten, denken Sie bitte daran, unter der ursprünglichen Frage eine Trennlinie und zusätzliche Informationen hinzuzufügen und die ursprünglichen Fragetexte oben zu halten. Jetzt scheint diese Antwort nicht mit der Frage übereinzustimmen. – Emma

2

Individuelle Checkbox mit zwei ziehbar Bild.

1. In .xml Datei

<android.support.v7.widget.AppCompatCheckBox 
    android:id="@+id/checkBox" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:layout_gravity="center" 
    android:background="@drawable/checkbox_selector" 
    android:button="@color/white" 
    android:checked="true" /> 

2. erstellen checkbox_selector.xml in ziehbar Ordner.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/cancel" 
     android:state_checked="false"/> 
    <item android:drawable="@drawable/checked" 
     android:state_checked="true"/> 
</selector> 

3. hinzufügen checked.png und cansel.phd Bild in ziehbar Ordner aus dem untenstehenden Link

https://icons8.com/icon/set/yes/all

Und

https://icons8.com/icon/set/cross/all

4. Checkbox Click-Ereignis

AppCompatCheckBox checkBox = (AppCompatCheckBox) view.findViewById(R.id.checkBox); 

checkBox.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     if (checkBox.isChecked()){ 
     checkBox.setChecked(false); 
     }else { 
     checkBox.setChecked(true); 
     } 
     } 
});