Je suis nouveau dans le développement Android et j'ai une question sur la définition du poids dans une mise en page linéaire.
J'essaie de créer une ligne avec deux boutons personnalisés et un texte d'édition personnalisé. Le texte d'édition ne doit prendre que la place de son contenu et les deux boutons doivent s'étendre horizontalement pour remplir le reste de l'espace disponible dans la ligne. Comme ça...
| [#Button++#] [#Button--#] [et] |
Après plusieurs tentatives, c'est le plus proche de ce que je veux, même si cela semble trop compliqué.
| [Button] [Button] [###ET###] |
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal|center_vertical"
android:layout_weight="1"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal|center_vertical"
>
<RelativeLayout
android:id="@+id/btn_plus_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ImageButton
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/btn_plus"
android:background="@drawable/btn"
android:layout_centerInParent="true"
></ImageButton>
<TextView
android:textColor="#FAFAF4"
android:id="@+id/tv_dice_plus"
android:text="@string/tv_plus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
></TextView>
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal|center_vertical"
>
<RelativeLayout
android:id="@+id/btn_minus_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ImageButton
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/btn_minus"
android:background="@drawable/btn"
android:layout_centerInParent="true"
></ImageButton>
<TextView
android:textColor="#FAFAF4"
android:id="@+id/btn_minus"
android:text="@string/tv_minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
></TextView>
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal|center_vertical"
>
<EditText
android:textColor="#FAFAF4"
android:text="@string/et_output"
android:id="@+id/et_output"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:selectAllOnFocus="true"
android:minWidth="50sp"
android:maxWidth="50sp"
android:background="@drawable/tv_black_background3"
android:textColorHighlight="#c30505"
></EditText>
</LinearLayout>
</LinearLayout>
D'après ce que je comprends, le réglage [android: layout_weight = "2"] pour les mises en page linéaires en maintenant les boutons devrait les faire prendre plus de place que le texte d'édition, mais cela fait le contraire pour moi, en les faisant tous les deux de moitié.
| [Btn] [Btn] [#####et#####] |
J'ai essayé tellement de combinaisons différentes que je ne m'en souviens même pas, et aucune n'a fonctionné.
android:Layout_weight
peut être utilisé lorsque vous n'attachez pas de valeur fixe à votre largeur, commefill_parent
etc.Faites quelque chose comme ceci:
<Button> Android:layout_width="0dp" Android:layout_weight=1 -----other parameters </Button>
la source
Pensez-le de cette façon, ce sera plus simple
Si vous avez 3 boutons et que leur poids est de 1,3,1 en conséquence, cela fonctionnera comme un tableau en HTML
Prévoyez 5 portions pour cette ligne: 1 portion pour le bouton 1, 3 portions pour le bouton 2 et 1 portion pour le bouton 1
la source
Dans le linearLayout, définissez WeightSum = 2;
Et distribuez le poids à ses enfants comme vous le souhaitez. J'ai donné un poids = "1" à l'enfant. Ainsi, les deux distribueront la moitié du total.
<LinearLayout android:id="@+id/linear1" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="2" android:orientation="horizontal" > <ImageView android:id="@+id/ring_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ring_oss" /> <ImageView android:id="@+id/maila_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/maila_oss" /> </LinearLayout>
la source
les valeurs de poids 0-1 partagent la distribution de l'espace disponible (après avoir défini layout_width = "0px") proportionnellement à la valeur de poids. Les éléments d'affichage dont le poids n'est pas spécifié (aucune entrée de poids) ont un poids de 0, ce qui signifie qu'ils n'obtiennent aucune expansion.
Une alternative simple sans entrées de poids nécessaires consiste à attacher un chapiteau à une vue avec du texte qui lui indique de s'étendre du minimum nécessaire pour le texte (wrap_content) à l'espace disponible EditText: android: layout_width = "wrap_content" android: ellipsize = "marquee"
la source
Je suppose que définir la
EditText
largeur s surwrap_content
et placer les deux boutons dans unLinearLayout
dont la largeurfill_parent
et le poids sont définis sur 1.la source
Une raison de plus que j'ai trouvée (aussi vague que cela puisse paraître). Le ci-dessous n'a pas fonctionné.
Ce qui a fonctionné était
Cela semble vague par une disposition de racine avec Linear et les poids en dessous ne fonctionnaient pas. Et quand je dis "n'a pas fonctionné", je veux dire, qu'après avoir vu la disposition graphique entre différentes résolutions, la cohérence de l'écran s'est cassée énormément.
la source
<LinearLayout android:id="@+id/linear1" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="9" android:orientation="horizontal" > <ImageView android:id="@+id/ring_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:src="@drawable/ring_oss" /> <ImageView android:id="@+id/maila_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:src="@drawable/maila_oss" /> <EditText android:id="@+id/edittxt" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:src="@drawable/maila_oss" /> </LinearLayout>
la source