Ich versuche, ein ImageView
Inneres LinearLayout
horizontal und vertikal zu zentrieren, aber ich kann es einfach nicht. Der Hauptgrund, warum ich kein dafür verwende RelativeLayout
, ist, dass ich das benötige layout_weight
(mein Activity
besteht aus vier Spalten, die gleichmäßig aufgeteilt werden sollten und auch auf unterschiedliche Bildschirmbreiten reagieren, wobei jede Spalte ImageView
zentriert und ungedehnt ist).
Hier ist meine XML bisher:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:baselineAligned="false"
android:gravity="center"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Main" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageButton_speak"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_bg"
android:src="@drawable/ic_speak" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageButton_readtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_bg"
android:src="@drawable/ic_readtext" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageButton_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_bg"
android:src="@drawable/ic_edit" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageButton_config"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_bg"
android:src="@drawable/ic_config" />
</LinearLayout>
</LinearLayout>
Antworten:
android:gravity
kümmert sich um die Ausrichtung seiner Kinder,android:layout_gravity
kümmert sich um die Ausrichtung von selbst.Verwenden Sie also eine davon.
oder
quelle
android:layout_gravity
wird für das Layout selbst verwendetVerwenden Sie
android:gravity="center"
für Kinder von IhnenLinearLayout
Ihr Code sollte also lauten:
quelle
Ich habe die hier genannten Lösungen ausprobiert, aber es hat mir nicht geholfen. Ich denke, die Lösung
layout_width
musswrap_content
als Wert verwendet werden.quelle
Hier ist ein Beispielcode. Das hat bei mir funktioniert.
Sie entwerfen also das lineare Layout so, dass der gesamte Inhalt (Textansicht und Schaltfläche) in der Mitte platziert wird. Anschließend werden die Textansicht und die Schaltfläche relativ zur Mitte des linearen Layouts platziert.
quelle
android:gravity
kann in einem Layout verwendet werden, um seine untergeordneten Elemente auszurichten.android:layout_gravity
kann in jeder Ansicht verwendet werden, um sich in der übergeordneten Ansicht auszurichten.quelle