web-dev-qa-db-fra.com

Définir la largeur du bouton dans Android

Comment définir une largeur fixe pour un bouton Android? Chaque fois que j'essaie de définir une largeur fixe, il remplit le parent actuel (le RelativeView). Voici mon XML:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout Android:id="@+id/relativelayout" Android:layout_width="fill_parent" Android:layout_height="fill_parent" xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <EditText Android:layout_height="wrap_content" Android:editable="false" Android:layout_width="fill_parent" Android:id="@+id/output"></EditText>

    <Button Android:layout_height="wrap_content" Android:id="@+id/Button01" Android:layout_below="@id/output" Android:text="7" Android:layout_width="wrap_content"></Button>
    <Button Android:layout_below="@id/output" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/Button02" Android:layout_toRightOf="@+id/Button01" Android:text="8"></Button>
    <Button Android:layout_below="@id/output" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/Button03" Android:layout_toRightOf="@+id/Button02" Android:text="9"></Button>
</RelativeLayout>

Comment pourrais-je lui donner une largeur FIXE?
METTRE À JOUR
Supposons que j'ai plusieurs boutons de même taille et 1/3 de la vue complète (Portrait), puis un bouton double de la largeur. Puis un bouton avec le double de la hauteur. Comment pourrais-je accomplir cet autre qui les dimensionnant manuellement?

15
Mohit Deshpande

Pour accomplir ce que vous voulez, vous pouvez utiliser un LinearLayout avec un poids. Par exemple, vous pouvez mettre un WeightSum de 9. Si vous placez le poids de trois boutons à 1 chacun. Ils prendront 1/3 de la place, et vous pouvez en mettre 2 pour un autre objet. Cet objet sera deux fois plus grand que l'autre.

http://developer.Android.com/reference/Android/widget/LinearLayout.html#setWeightSum(float)

Edit: Je voudrais ajouter que pour que cela fonctionne correctement, vous devez définir la largeur ou la hauteur sur 0px (selon qu’il s’agit d’une disposition horizontale ou verticale).

12

Au lieu de Android:layout_width="wrap_content", vous pouvez utiliser une taille de pixel fixe comme par exemple Android:layout_width="20px" ou une meilleure méthode: Android:layout_width="20dp"

vous pouvez également définir la largeur par programmation dans le code: Button.setWidth(int width)

Concernant votre mise à jour:

Je ne sais pas si c'est une bonne solution, mais je travaille. Vous pourriez utiliser

 DisplayMetrics metrics = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(metrics);

pour lire la résolution de l'écran, puis définir la taille des boutons en fonction de metrics.widthPixel et metrics.heightPixel

12

Utilisez minWidth et minHeight pour définir la largeur et la hauteur d'un bouton.

<Button Android:layout_height="wrap_content"
 Android:id="@+id/Button01" 
 Android:layout_below="@id/output" 
 Android:text="7" 
 Android:minWidth="100dp">
</Button>
6
Muhammad Aamir Ali

Le moyen le plus simple et le plus simple de définir un bouton de manière dynamique est 

 Button index=new Button(this);
 int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 45, getResources().getDisplayMetrics());             
 int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 42, getResources().getDisplayMetrics());

La hauteur et la largeur en pixels px . 45 étant la hauteur dans dp et 42 étant la largeur dans dp .

 index.setLayoutParams(new <Parent>.LayoutParams(width, height));

Ainsi, par exemple, si vous avez placé votre bouton dans un TableRow dans un TableLayout, vous devriez l'avoir sous la forme TableRow.LayoutParams.

 index.setLayoutParams(new TableRow.LayoutParams(width, height));
3
Ali Kahoot

ajoutez la ligne Android:minwidth dans ce code. 

0
Rathiga Jesika