android RadioButton bouton drawable gravité
Je suis de générer dynamiquement des composants radiobutton avec
RadioButton radioButton=new RadioButton(context);
LayoutParams layoutParams=new LayoutParams(radioWidth,radioHeight);
layoutParams.gravity=Gravity.CENTER;
radioButton.setLayoutParams(layoutParams);
radioButton.setGravity(Gravity.CENTER);
BitmapDrawable bitmap = ((BitmapDrawable)drawableResource);
bitmap.setGravity(Gravity.CENTER);
radioButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.itabs_radio));
radioButton.setButtonDrawable(bitmap);
comme vous pouvez le voir je suis désespérément à essayer de définir la gravité de bouton dessinés au centre, mais sans raison qu'elle a toujours center et aligné à gauche, voilà la raison - le style par défaut d'android bouton radio:
<style name="Widget.CompoundButton">
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:textAppearance">?android:attr/textAppearance</item>
<item name="android:textColor">?android:attr/textColorPrimaryDisableOnly</item>
<item name="android:gravity">center_vertical|left</item>
</style>
<style name="Widget.CompoundButton.RadioButton">
<item name="android:background">@android:drawable/btn_radio_label_background</item>
<item name="android:button">@android:drawable/btn_radio</item>
</style>
Est il possible que je peux aligner le bouton dessinés au centre?
Vous devez vous connecter pour publier un commentaire.
Selon
CompoundButton.onDraw()
code source c'est toujours aligné à gauche.(Note de la ligne
buttonDrawable.setBounds(0, y, buttonDrawable.getIntrinsicWidth(), y + height);
)Vous aurez à dériver une nouvelle classe de
RadioButton
et remplaceronDraw()
.EXEMPLE AJOUTÉ PLUS TARD:
Ok, voici donc ce que vous faites. Tout d'abord, voici un modèle:
Deuxièmement voici le dessin RadioButtonCenter:
Enfin, voici un attrs.xml fichier dont vous avez besoin pour mettre en res/valeurs de sorte que le code ne peut accéder à la plate-forme d'attributs définis.
android.content.res.Resources$NotFoundException: File from drawable resource ID #0x1020004
setButtonDrawable(android.R.color.transparent);
compile 'com.android.support:design:23.0.1'
a.getDrawable(1);
renvoie la valeur null. À l'aide dea.getDrawable(R.styleable.CompoundButton_android_button);
fonctionne pour moi.android:layout_height="wrap_content"
sur le bouton, le bouton de l'image est croped.Solution Simple, vous pouvez ajouter un arrière-plan d'un bouton radio, ou d'arrière-plan="@null".
mise à jour:
button
objet, vous utilisez drawableTop. Voir la accepté de répondre - vous besoin pour mettre en œuvre une coutume RadioButton pour atteindre cet objectif.Basé sur @huée réponses, j'avais customisé à faire à la fois du texte et dessiné pour le centre, sans l'aide d'essences,
}
<radiogroup android:paddingLeft = "20dp" android:background="@color/gray">
Bref, j'ai une alignés horizontalement groupe de boutons radio, et par l'expansion de la couleur d'arrière-plan à gauche 20dp (ou quel que soit 1/2 de la largeur de votre de bouton radio), il semble comme si il est centré.