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:
--
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:
--
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:
poids de la somme de 5 grand écran:
--
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?
Vous devez vous connecter pour publier un commentaire.
De nombreux programmeurs vont utiliser
res/layout/
etres/layout-large/
pour le traitement des situations de ce genre. Dans les rares cas de trois boutons, vous pouvez avoir des solutions de rechange, mais généralement les interfaces utilisateur ne sont pas tout à fait simpliste.Pour accomplir votre "préférence" [sic] l'exigence, vous avez besoin pour créer une mise en page personnalisée de la classe pour que. Ici est celle liée à elle, pour le tableau de bord, modèle, que vous pouvez utiliser comme un point de départ.
Si vous savez à l'avance ce que votre plus large bouton de texte vous pouvez utiliser la
android:ems
attribut pour définir vos boutons pour que la largeur.Il n'est pas parfait, mais c'est la façon la plus simple que j'ai trouvé pour obtenir ce look à l'infini sans bidouiller avec les mises en page.
utilisez le tableau de bord Fragment de classe
http://code.google.com/p/iosched/source/browse/android/src/com/google/android/apps/iosched/ui/DashboardFragment.java
Juste une remarque de mon côté!
Si vous devez régler la largeur (ou la hauteur) pour les boutons (ou de toute autre vue avec de simples changements de code) qui sont ajoutés au moment de l'exécution, vous pouvez utiliser le code ci-dessous (cela ne dépend pas de l'orientation):
Ici, dans mon cas:
llModule - certains modèle contenant une autre mise en page avec ce dont nous avons besoin pour aligner(
v.getChildAt(0);
) et d'autres(v.getChildAt(1);
).LinearLayout v = (LinearLayout)llModules.getChildAt(i); - obtenir la mise en page des boutons pour aligner.
Autres pièces sont facile à comprendre.
Deux cycles dans le présent code sont tout à fait identiques, mais je ne peux pas imaginer comment les combiner (pour accélérer le temps d'exécution).
Utiliser ce code approprié cela va vous aider.
Garder les boutons individuels en vertu de sa propre RelativeLayout.
La lecture de ce thread, puis de faire quelques essais et d'erreurs et remarqué que
android:layout_width="180px"
est un paramètre. Maintenant, comme dit, je viens de tombé sur ce, n'essayez pas de l'utiliser pour résoudre vos trois boutons scénario.Il se pourrait bien que les choses ont changé depuis que vous avez posté. Bien que j'ai essayé ce que lors de la construction pour la version 1.5. C'est assez vieux... 🙂
Voici la
main.xml
:dp
et paspx
. 2. Réglage de la largeur à un dp montant ne garantit pas que le texte à l'intérieur du bouton d'ajustement (il dépend, pour le texte).