Je suis nouveau dans le développement Android et j'ai une question à propos de 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 modifié ne doit occuper que la quantité de place requise et les deux boutons doivent se développer horizontalement pour occuper le reste de l'espace disponible dans la ligne. Comme ça...
| [#Button++#] [#Button--#] [et] |
Après plusieurs tentatives, je peux me rapprocher 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>
Si je comprends bien, le réglage [Android: layout_weight = "2"] pour les dispositions linéaires contenant les boutons devrait leur faire occuper plus de place que le texte de modification, mais il en va tout autrement pour moi, en les réduisant 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é.
Cela ne fonctionne pas car vous utilisez fill_parent comme largeur. Le poids sert à répartir l’espace vide restant ou à supprimer l’espace lorsque la somme totale est supérieure à LinearLayout. Réglez vos largeurs sur 0dip à la place et cela fonctionnera.
Android:Layout_weight
peut être utilisé lorsque vous n'attachez pas déjà une valeur fixe à votre largeur comme fill_parent
etc.
Faites quelque chose comme ça:
<Button>
Android:layout_width="0dp"
Android:layout_weight=1
-----other parameters
</Button>
Pensez-y de cette façon, ce sera plus simple
Si vous avez 3 boutons et que leur poids est 1,3,1 en conséquence, cela fonctionnera comme dans HTML
Fournissez 5 portions pour cette ligne: 1 portion pour le bouton 1, 3 portions pour le bouton 2 et 1 portion pour le bouton 1
Dans linearLayout, définissez WeightSum = 2;
Et distribuez le poids à ses enfants comme vous le souhaitez. J'ai donné du poids = "1" à l'enfant. Ainsi, les deux vont distribuer 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>
valeurs de pondération 0-1 partage la répartition de l'espace disponible (après avoir défini layout_width = "0px") proportionnellement à la valeur de pondération. Les éléments de vue avec un poids non spécifié (aucune entrée de poids) ont un poids égal à 0, ce qui signifie qu'ils ne subissent aucune expansion.
Une alternative simple ne nécessitant aucune entrée de poids consiste à associer Marquee à une vue contenant du texte Elle lui demande de passer du minimum requis pour le texte (wrap_content) à l'espace disponible. Android: layout_width = "wrap_content" Android: ellipsize = "Marquee"
Une raison de plus que j'ai trouvée (aussi vague que cela puisse paraître). Le ci-dessous n'a pas fonctionné.
LinearLayout vertical
LinearLayout height fillparent + weight
LinearLayout height fillparent + weight
LinearLayout height fillparent + weight
EndLinearLayout
Qu'est-ce que le travail était
Disposition relative
LinearLayout vertical
LinearLayout height fillparent + weight
LinearLayout height fillparent + weight
LinearLayout height fillparent + weight
EndLinearLayout
EndRelativeLayout
Cela semble vague par une mise en page racine avec linéaire et les poids en dessous ne fonctionnaient pas. Et quand je dis "n'a pas fonctionné", je veux dire qu'après avoir visualisé la mise en page graphique entre différentes résolutions, la cohérence de l'écran a éclaté.
<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>
je supposerais de régler la largeur de EditText
s sur wrap_content
et de placer les deux boutons dans un LinearLayout
dont la largeur est fill_parent
et le poids défini sur 1.