J'ai trois éléments dans un LinearLayout horizontal: un TextView , un ImageButton et un autre TextView . Tous les trois sont centrés verticalement.
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
5 Réponses :
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" />
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â
Les enfants doivent avoir:
1 - layout_width = "0dp"
2 - layout_weight = "1"
Voici l'implémentation dont vous avez besoin:
< pré> XXXUtilisez 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>
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>