2010-11-23 42 views
3

J'ai ces boutons radio et ils ont besoin android:width="X" et android:height"X" Cependant, je ne sais pas comment définir ces propriétés afin qu'ils s'adaptent à une taille d'écran différente.Comment puis-je modifier la largeur des boutons radio en fonction de la taille de l'écran? (android)

Voici le code que je utilise pour mes boutons:

<RadioGroup android:layout_width="fill_parent" 
     android:layout_height="50px" android:orientation="horizontal" 
     android:checkedButton="@+id/first" android:id="@+id/states"> 

       <RadioButton android:id="@+id/first" 
        android:background="@drawable/button_radio" android:width="50px" 
        android:height="50px" /> 

       <RadioButton android:id="@+id/second" 
        android:background="@drawable/button_radio" android:width="50px" 
        android:height="50px" /> 

       <RadioButton android:id="@+id/third" 
        android:background="@drawable/button_radio" android:width="50px" 
        android:height="50px" /> 

       <RadioButton android:id="@+id/fourth" 
        android:background="@drawable/button_radio" android:width="50px" 
        android:height="50px" /> 

       <RadioButton android:id="@+id/fifth" 
        android:background="@drawable/button_radio" android:width="50px" 
        android:height="50px" /> 

    </RadioGroup> 

J'ai essayé de mettre les boutons radio dans une ligne de table, mais ils ne fonctionnent pas correctement. Quand je clique sur un, il l'a sélectionné, mais je ne l'ai pas désélectionné quand j'ai cliqué sur un autre.

J'ai essayé de remplacer le android:width par android:layout_width mais ils ne s'affichent pas.

J'ai également essayé d'utiliser dip, mais les boutons ne sont pas apparus.

Je devrais également ajouter que j'utilise drawables au lieu des boutons de stock radio. Je ne sais pas si cela ferait une différence, mais les drawables sont tous de la même taille (50px x 50px).

Est-ce que quelqu'un sait comment je peux régler la hauteur et la largeur de ces derniers afin qu'ils s'ajustent à des tailles d'écran différentes?

Répondre

7

Définissez la hauteur et la largeur à l'aide de dp au lieu de px. Voir la réponse à ce poste pour plus d'informations sur les unités. What is the difference between "px", "dp", "dip" and "sp" on Android?

Je vous suggère également de vous familiariser avec documentation de android sur la prise en charge de plusieurs écrans. Bon, alors j'ai pris un moment pour lancer un exemple rapide pour Android 1.5. Vous pouvez trouver le source here.

En bref, vous devez prendre les mesures suivantes:

Placez vos images dans res/drawable. Vous devez avoir au moins 4 icônes: Pressé & Sans contrôle, Pressé & vérifié, Non Pressé & non contrôlé, non vérifié Pressé &

Créer une mise en page de type selector dans res/drawable. Voici le mien:

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

Ensuite, mettre en place votre RadioGroup comme ceci:

<RadioGroup android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:orientation="horizontal" 
    android:checkedButton="@+id/first"> 
    <RadioButton android:id="@+id/first" 
     android:width="50dp" 
     android:height="50dp" 
     android:button="@drawable/button_radio"/> 
    <RadioButton android:id="@+id/second" 
     android:width="50dp" 
     android:height="50dp" 
     android:button="@drawable/button_radio"/> 
    <RadioButton android:id="@+id/third" 
     android:width="50dp" 
     android:height="50dp" 
     android:button="@drawable/button_radio"/> 
    <RadioButton android:id="@+id/fourth" 
     android:width="50dp" 
     android:height="50dp" 
     android:button="@drawable/button_radio"/> 
</RadioGroup> 

J'ai spécifié dimension de 50dp comme la dimension de mes dessinables sont 50px x 50px. Notez également que je mets android:button et non android:background.

est ici un signé APK du projet ci-dessus: Custom RadioButton (Note: il est destiné à la version SDK 4 de sorte qu'il ne demanderait pas des autorisations SD et téléphone)

Cela devrait donner le résultat suivant: Image of Custom RadioButton

Espérons que cela aide.

+0

Désolé, j'aurais dû dire que j'ai essayé de tremper, mais les boutons ne montraient pas. Je vais ajouter cela à l'OP. J'ajouterai aussi le fait que j'utilise des drawables au lieu des boutons standard. – NotACleverMan

+1

Si vos boutons sont des images réelles, créez 3 versions différentes et placez-les dans les dossiers 'res/drawable-ldpi',' res/drawable-mdpi', 'res/drawable-hdpi'. Pourquoi spécifiez-vous une taille de pixel? – Thomas

+0

Je fais cela pour toutes les versions d'Android et pour le moment les drawables sont seulement dans le dossier "drawable". Je l'utilise aussi sur l'émulateur 1.5. Je spécifie seulement la taille de pixel parce que c'est la seule manière dont les boutons apparaissent réellement. Avec la table, ils montrent, mais ne désélectionnez pas, et de toute autre façon, ils n'apparaissent pas du tout. Juste un grand espace noir où ils devraient être. – NotACleverMan

8

Je vous suggère d'essayer ce qui suit avec votre radioGroup:

  <RadioButton android:id="@+id/first" 
       android:background="@drawable/button_radio" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:weight=1 /> 

      <RadioButton android:id="@+id/second" 
       android:background="@drawable/button_radio" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:weight=1 /> 

      <RadioButton android:id="@+id/third" 
       android:background="@drawable/button_radio" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:weight=1 /> 

      <RadioButton android:id="@+id/fourth" 
       android:background="@drawable/button_radio" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:weight=1 /> 

      <RadioButton android:id="@+id/fifth" 
       android:background="@drawable/button_radio" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:weight=1 /> 

</RadioGroup> 

De cette façon, tous vos boutons radio occupera un espace égal. De plus, cela va changer selon la taille de l'écran.

+0

Cela devrait être la réponse acceptée! – satyadeepk