Comment créer des Boutons avec l'Égalité des Largeurs?

Je veux afficher des trois boutons au milieu de l'écran, et les trois boutons tous être de la même largeur, même s'ils ont des étiquettes de texte de différentes longueurs.

Juste l'ajout de trois boutons avec des étiquettes de texte de différentes longueurs produit des boutons de différentes largeurs.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:gravity="center">
    <Button
        android:id="@+id/button_1"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="ABCDEF" />
    <Button
        android:id="@+id/button_2"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="GHI" />
    <Button
        android:id="@+id/button_3"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:text="JKLM" />
</LinearLayout>

bouton par défaut de la largeur de encapsule le contenu:

Comment créer des Boutons avec l'Égalité des Largeurs?

--

Réglage de la layout_weight à 1 et le layout_width à 0dip sur tous les boutons causes pour étirer également à remplir la totalité de la largeur de l'écran. Pour ce que je veux, ces boutons sont tout simplement trop grand, en particulier sur les grands écrans.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:gravity="center">
    <Button
        android:id="@+id/button_1"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="ABCDEF" />
    <Button
        android:id="@+id/button_2"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="GHI" />
    <Button
        android:id="@+id/button_3"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="JKLM" />
</LinearLayout>

mise en page de poids 1 boutons de remplir la largeur de l'écran:

Comment créer des Boutons avec l'Égalité des Largeurs?

--

Réglage des valeurs différentes pour weightSum dans le parent LinearLayout peut être utilisé pour arrêter les boutons de remplir la totalité de l'écran, mais je ne pense pas que c'est le chemin que je veux prendre, parce que je ne veux pas les boutons à occuper une grande partie de l'écran sur grand écran des appareils. Pour préciser, à l'aide de weightSum, je pourrais, par exemple, les trois boutons collectivement occuper la moitié de la largeur de l'écran, ce qui peut sembler OK, sur les petits écrans, mais sur un grand écran, les boutons seraient toujours occuper la moitié de la largeur de l'écran, et les boutons seront tout simplement beaucoup plus grande que ce que je veux. Peut-être la solution finale sera tout simplement différents fichiers de mise en page pour différents écrans, mais je préfère ne pas aller dans cette voie.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:gravity="center"
    android:weightSum="5">
    <Button
        android:id="@+id/button_1"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="ABCDEF" />
    <Button
        android:id="@+id/button_2"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="GHI" />
    <Button
        android:id="@+id/button_3"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="JKLM" />
</LinearLayout>

poids de la somme de 5 petit écran:

Comment créer des Boutons avec l'Égalité des Largeurs?

poids de la somme de 5 grand écran:

Comment créer des Boutons avec l'Égalité des Largeurs?

--

J'ai aussi essayé beaucoup de choses avec TableLayout, mais n'obtenez rien de mieux que de simplement en utilisant LinearLayout.

GridView est extra-maladroit à utiliser, et je n'ai pas essayé, pourtant.

Donc, comment créer des boutons avec l'égalité de largeurs, de préférence là où ils sont aussi large que nécessaire pour s'adapter au contenu du bouton avec la plus longue de l'étiquette?

Tout conseil est le bienvenue.

(J'ai fait une recherche et de trouver cette question et a répondu à de nombreuses reprises, mais aucune des réponses que j'ai trouvé résolu ce que je suis en train de réaliser.)

  • comment sur la rédaction d'une mise en page personnalisée?
InformationsquelleAutor Thane Anthem | 2011-03-28