2017-03-13 1 views
0

Je suis confronté au problème en créant la case à cocher en forme circulaire dans android. J'ai essayé beaucoup de méthodes mais mon problème n'est pas résolu. J'ai créé les formes et appliqué à la case à cocher puis le problème n'est pas résolu. S'il vous plaît aidez-moi comment créer la case à cocher en forme de cercle. enter image description hereComment créer le checkBox en forme circulaire?

Comment créer la case à cocher circulaire comme indiqué image.

+0

[question similaire] http://stackoverflow.com/questions/38798168/customized-circular-checkbox-in -android Avez-vous essayé cela? – chirag90

+0

J'ai essayé mais le problème n'est pas résolu –

+0

http://android-dev-examples.blogspot.co.uk/2014/09/android-custom-checkbox.html Qu'en est-il de ce tutoriel? Si vous regardez vers le bas, vous verrez le bouton CheckBox personnalisé et l'arrière-plan ici, il montre le bouton cercle – chirag90

Répondre

11

Après avoir passé du temps, j'ai créé ce modèle que vous pouvez utiliser. Vous devrez peut-être modifier au besoin.

Dans activity.xml

<CheckBox 
    android:id="@+id/checkb" 
    android:layout_width="115dp" 
    android:layout_height="50dp" 
    android:button="@drawable/custom_checkbox" 
    android:scaleX="3" 
    android:scaleY="3" 
    android:layout_centerVertical="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_marginRight="15dp" 
    android:layout_marginEnd="15dp" /> 

créer un nouveau xml dans le dossier drawable appelé custom_checkbox.xml

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

créer un nouveau xml dans le dossier drawable appelé checked.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true"> 
     <layer-list> 
      <item> 
       <shape android:shape="oval"> 
        <corners android:radius="1dp" /> 
        <stroke 
         android:width="1dp" 
         android:color="#777" /> 
        <gradient 
         android:startColor="#990000" 
         android:centerColor="#990000" 
         android:endColor="#990000" 
         android:angle="270" /> 
        <size 
         android:width="30dp" 
         android:height="30dp" /> 
       </shape> 
       </item> 

      <item 
       android:width="8dp" 
       android:height="2dp" 
       android:top="20dp" 
       android:left="6dp"> 
       <rotate 
        android:fromDegrees="45"> 
        <shape android:shape="rectangle"> 
         <solid android:color="#fff"/> 
        </shape> 
       </rotate> 
      </item> 

      <item 
       android:width="19dp" 
       android:height="2dp" 
       android:top="16dp" 
       android:left="9dp"> 
       <rotate 
        android:fromDegrees="-45"> 
        <shape android:shape="rectangle"> 
         <solid android:color="#fff"/> 
        </shape> 
       </rotate> 
      </item> 
     </layer-list> 
    </item> 

</selector> 

créer un nouveau fichier XML dans le dossier drawable appelé unchecked.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> 
     <corners android:radius="1dp" /> 
     <stroke 
      android:width="1dp" 
      android:color="#777" /> 
     <gradient 
      android:startColor="#990000" 
      android:centerColor="#990000" 
      android:endColor="#990000" 
      android:angle="270" /> 
     <size 
      android:width="30dp" 
      android:height="30dp" /> 
    </shape> 

Lorsqu'elle n'est pas cochée, elle ressemble à ci-dessous. (Vous pouvez ajouter le code entre de checked.xml et modifier le haut et à gauche pour donner X lorsque la case est non cochée)

unchecked State

Quand vérifié sera comme ci-dessous

checked state

Si cela fonctionne marquez-le comme réponse.

+0

La forme sort tout étrange sur Android version 4.4 ... Des suggestions pour le faire fonctionner ici?Nice case à cocher sinon :) – JayB

+0

Salut @JayB, je n'ai pas regardé le 4.4, j'ai créé ceci dans marshmellow 6.0. Vous pouvez essayer de modifier checked.xml et unchecked.xml – chirag90

2

La solution acceptée est correcte, mais suivant le même flux vous pouvez changer les formes pour utiliser un dessinable sur le fichier "checked.xml" cette solution devrait fonctionner avec les périphériques android avant API 21 car il n'y a pas de largeur ou de hauteur sur tirages XML.

XML non contrôlé:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> 


     <solid android:color = "@color/lightgray" /> 
</shape> 

XML Vérifié:

<?xml version="1.0" encoding="utf-8"?> 
     <layer-list xmlns:android = "http://schemas.android.com/apk/res/android"> 
      <item> 
       <shape android:shape="oval"> 
        <solid android:color="@color/colorPrimary" /> 
       </shape> 
       </item> 

      <item 
         android:drawable="@drawable/check_arrow_png" /> 
     </layer-list> 
+0

Aussi l'image vectorielle pour la flèche de contrôle est Vérifiez sur les vecteurs android, avec cela, vous devriez avoir une case à cocher avec le style de conception de matériel –