web-dev-qa-db-fra.com

Comment centrer le contenu dans une mise en page linéaire?

J'essaie de centrer un ImageView à l'intérieur d'un LinearLayout horizontalement et verticalement, mais je ne peux simplement pas le faire. La raison principale pour laquelle je n'utilise pas de variable RelativeLayout est que j'ai besoin du layout_weight (mon Activity est constitué de quatre colonnes qui doivent être divisées de manière égale et qui répondent également à des écrans différents. largeurs, chaque colonne ayant un ImageView centré et non étiré).

Voici mon xml à ce jour:

<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>
131
horta

Android:gravity gère l'alignement de ses enfants,

Android:layout_gravity gère son propre alignement.

Alors utilisez-en un.

<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_weight="1"
        Android:gravity="center" >

        <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_weight="1"
        Android:gravity="center" >

        <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>

ou

<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: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:layout_gravity="center"
            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:layout_gravity="center"
            Android:background="@drawable/image_bg"
            Android:src="@drawable/ic_readtext" />
    </LinearLayout>

    ...
</LinearLayout>
323
Naetmul

Android:layout_gravity est utilisé pour la mise en page elle-même

Utilisez Android:gravity="center" pour les enfants de votre LinearLayout

Donc, votre code devrait être:

<LinearLayout
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:gravity="center"
        Android:layout_weight="1" >
31
Tarsem Singh

J’ai essayé les solutions ici mais j’ai un problème et j’ai essayé quelques modifications qui me dérangent dans layout_widthn’aurais besoin d’être wrap_content comme ceci

<LinearLayout
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:gravity="center"
    Android:layout_weight="1" >
6
ViTUu

Voici un exemple de code. Cela a fonctionné pour moi.

<LinearLayout
    Android:gravity="center"
    >
    <TextView
        Android:layout_gravity="center"
        />
    <Button
        Android:layout_gravity="center"
        />
</LinearLayout>

Vous concevez donc la disposition linéaire pour placer tout son contenu (TextView et Button) en son centre, puis la vue TextView et le bouton sont placés par rapport au centre de la disposition linéaire.

3
Prabhu M