Estou tentando centralizar um ImageView
interior de forma LinearLayout
horizontal e vertical, mas simplesmente não consigo. A principal razão pela qual não estou usando um RelativeLayout
para isso é porque eu preciso do layout_weight
(meu Activity
consiste em quatro colunas que devem ser igualmente divididas e também responsivas a diferentes larguras de tela, cada coluna tendo uma ImageView
centralizada e não esticada).
Aqui está o meu xml até agora:
<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>
Respostas:
android:gravity
lida com o alinhamento de seus filhos,android:layout_gravity
lida com o alinhamento de si mesmo.Então use um desses.
ou
fonte
android:layout_gravity
é usado para o próprio layoutUse
android:gravity="center"
para crianças do seuLinearLayout
Portanto, seu código deve ser:
fonte
Tentei as soluções mencionadas aqui, mas isso não me ajudou. Eu me importo que a solução é
layout_width
ter que usarwrap_content
como valor.fonte
Aqui está um código de exemplo. Isso funcionou para mim.
Então, você está projetando o Layout Linear para colocar todo o seu conteúdo (TextView e Button) em seu centro e, em seguida, o TextView e o Button são colocados em relação ao centro do Layout Linear.
fonte
android:gravity
pode ser usado em um layout para alinhar seus filhos.android:layout_gravity
pode ser usado em qualquer visualização para se alinhar em seu pai.fonte