Pourquoi ne maxWidth sur un Bouton fonctionne pas et comment le contourner?
J'ai deux boutons sur la mise en page, et sur un grand écran de l'appareil (comprimés) je veux le cap de leur largeur afin de ne pas paraître ridicule. Je m'attendais à utiliser le maxWidth attribut mais apparemment il ne fait rien dans mon scénario. Voici la définition de la structure - les boutons d'utiliser toute la largeur de la mise en page, ignorant tout de la valeur dans maxWidth.
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxWidth="100dp"
android:text="Button 1"
/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxWidth="100dp"
android:text="Button 2"
/>
</LinearLayout>
Pourquoi, et comment contourner ce (apparemment fou) limitation?
Pourquoi les boutons layout_width 0dp et pas wrap_content?
0dp largeur en combinaison avec un layout_weight correspondant à celle des éléments frères sera de s'assurer qu'ils sont de la même largeur que les autres
0dp largeur en combinaison avec un layout_weight correspondant à celle des éléments frères sera de s'assurer qu'ils sont de la même largeur que les autres
OriginalL'auteur Ollie C | 2011-08-26
Vous devez vous connecter pour publier un commentaire.
Supprimer la
android:layout_weight="1"
ligne à partir de deux boutons.Ajouter
android:minWidth="50dp"
etandroid:layout_width="wrap_content"
EDIT:
Vous avez besoin pour calculer la taille des boutons manuellement en fonction de la taille de l'écran. Vous devez d'abord avoir un standard taille de l'écran de jeu. Par exemple, Si vous développez l'application sur une largeur de l'écran 400px, et le bouton est 100px de large, alors la formule pour maintenir le même
button width to screen width
rapport sur tous les appareils seront comme suitCas d'utilisation:
Si la largeur de l'écran = 480px, puis sur le bouton largeur doit être de 120px.
C'est ce qui cause les boutons pour étirer pour remplir toute la largeur de la mise en page. Définir la minwidth aussi et de modifier la largeur de
wrap_content
pas 0dp.Si je supprime le layout_weight le bouton n'est pas à l'échelle, qui est ce que je veux faire. Je veux un bouton qui évolue avec dispositif de tailles, mais seulement jusqu'à une taille maximale.
si vous utilisez
dp
pour des dimensions alors un drawable sera mis à l'échelle automatiquement pour différentes densités. Vous ne pouvez pas le faire pour différentes tailles.Je pourrais le faire de manière dynamique, mais c'est une jolie force brute approche. J'espérais qu'il était loin de convaincre le cadre de travail que j'attendais. Je vais regarder de sous-classement Bouton pour inclure un redimensionnement dynamique, mais aussi à l'aide de diverses variantes de mise en page pour éviter le besoin.
OriginalL'auteur Ronnie
La bon moyen de résoudre ce problème est de créer plusieurs mise en page pour une combinaison différente de la résolution de l'écran. Quand vous arrivez à un certain max étirer, de créer une nouvelle mise en page qui ont valeur fixe en cas de besoin. Voir la section sur les "Utiliser la mise en page alias" dans http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
OriginalL'auteur darkzangel
Essayer de régler le layout_width à wrap_content vs 0dp.
OriginalL'auteur yoshi24
Largeur/Hauteur semblent toujours avoir à être ensemble.. C'est le travail de mon point de vue
Le bouton du parent est défini pour l'envelopper de contenu, de sorte que les échelles vers le bas, mais jusqu'à un maximum de 400 de large (4 boutons)
OriginalL'auteur daniel