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>