2
votes

Mise en page linéaire horizontale avec trois vues, la vue du milieu doit être centrée horizontalement

J'ai trois éléments dans un LinearLayout horizontal: un TextView , un ImageButton et un autre TextView . Tous les trois sont centrés verticalement.

 entrez la description de l'image ici

Comment puis-je en outre obtenir que le ImageButton du milieu soit exactement centré horizontalement, quelle que soit la largeur des deux TextViews ?

Autrement dit: je veux avoir le ImageButton au centre exact, le TextView gauche doit être aligné à droite et le TextView droit devrait avoir l'air aligné à gauche. Les trois vues doivent être centrées verticalement.

Merci.

Stefan


0 commentaires

5 Réponses :


0
votes

vous feriez mieux de leur fixer un poids. jouez simplement avec le poids.

S'ils ont un poids constant, ils occupent toujours une quantité d'espace spécifique, quoi qu'il arrive.

1-définissez la largeur de toutes les vues pour correspondre au parent.

2- définissez tout le poids sur 1.

puis assurez-vous que votre image est au centre de ces vues de texte

 <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message" />


0 commentaires

1
votes

Utilisez dans LinearLayout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="3"
tools:context=".MainActivity">

<TextView
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content" />

<ImageButton
    android:layout_weight="1"
    android:layout_width="0"
    android:layout_height="wrap_content" />

<TextView
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content" />



</LinearLayout>

et à chaque mise en page de vos 3 mises en page, utilisez l'attribut ci-dessous

android:layout_weight=“1”
android:layout_width=“0dp”

android:weightSum=“3”


0 commentaires

0
votes

Les enfants doivent avoir:

1 - layout_width = "0dp"

2 - layout_weight = "1"

Voici l'implémentation dont vous avez besoin:

< pré> XXX


0 commentaires

0
votes

Utilisez le poids de la mise en page. Vérifiez l'exemple ci-dessous:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layout_cancel_x_next"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

       <TextView
           android:id="@+id/text1"
           android:layout_width="@dimen/dimen_0dp"
           android:layout_weight="1"
           android:gravity="center_vertical"
           android:layout_height="match_parent"
           android:text="text1"
           />
        <ImageView
            android:id="@+id/b"
            android:layout_width="@dimen/dimen_0dp"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:src="@drawable/ic_delete_button"
            android:layout_weight="1"
            />
        <TextView
            android:id="@+id/text2"
            android:layout_width="@dimen/dimen_0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:text="text2"/>

    </LinearLayout>


0 commentaires

0
votes

Veuillez essayer celui-ci ...

<?xml version="1.0" encoding="utf-8"?><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="end"
        android:text="This is a first text" />

    <ImageButton
        android:id="@+id/imageButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="start"
        android:text="This is second text" />
</LinearLayout>


0 commentaires