Cum se centrează conținutul în interiorul unui aspect liniar? (Programare, Android, Aspect Android, Android Linearlayout)

horta a intrebat.

Încerc să centrez un ImageView în interiorul unui LinearLayout pe orizontală și verticală, dar nu reușesc să o fac. principalul motiv pentru care nu folosesc un RelativeLayout pentru asta este pentru că am nevoie de layout_weight (my Activity constă din patru coloane care ar trebui să fie împărțite în mod egal și, de asemenea, să răspundă la diferite lățimi de ecran, fiecare coloană având un ImageView centrat și nealungit).

Iată xml-ul meu de până acum:

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

Comentarii

  • postați captura de ecran după cum doriți și captura de ecran curentă –  > Por Yogesh Tatwal.
6 răspunsuri
Naetmul

android:gravity se ocupă de alinierea copiilor săi,

android:layout_gravity se ocupă de alinierea lui însuși.

Deci, utilizați unul dintre acestea.

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

sau

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

Comentarii

  • „android:layout_gravity se ocupă singur.” ar modifica pentru a spune că layout-ul gravitațional este utilizat de către părintele. –  > Por ataulm.
Tarsem Singh

android:layout_gravity este folosită pentru layout-ul propriu-zis

Utilizați android:gravity="center" pentru copiii din LinearLayout

Deci, codul tău ar trebui să fie:

<LinearLayout
        android_layout_width="0dp"
        android_layout_height="wrap_content"
        android_gravity="center"
        android_layout_weight="1" >

ViTUu

Am încercat soluțiile menționate aici, dar nu m-au ajutat. Cred că soluția este layout_width trebuie să folosiți wrap_content ca valoare.

<LinearLayout
    android_layout_width="wrap_content"
    android_layout_height="wrap_content"
    android_gravity="center"
    android_layout_weight="1" >

pcodex

Iată câteva exemple de cod. Acest lucru a funcționat pentru mine.

<LinearLayout
    android_gravity="center"
    >
    <TextView
        android_layout_gravity="center"
        />
    <Button
        android_layout_gravity="center"
        />
</LinearLayout>

Deci, proiectați Layout-ul liniar pentru a plasa tot conținutul său (TextView și Button) în centrul său, iar apoi TextView și Button sunt plasate în raport cu centrul Layout-ului liniar.

Comentarii

  • simplu. Atributul „gravity” afectează conținutul unei vizualizări. Deci, în acest caz, care este conținutul LinearLayout? Un TextView și un buton. De fapt, îi dați instrucțiuni Layout Manager-ului să centralizeze orice conținut al Linear Layout. –  > Por pcodex.
Gibolt

android:gravity poate fi utilizat pe un Layout pentru a alinia copiii săi.

android:layout_gravity poate fi utilizat pe orice vizualizare pentru a se alinia în părintele său.

NOTĂ: Dacă sine sau copiii nu se centrează așa cum se așteaptă, verificați dacă lățimea/înălțimea este match_parent și schimbați-o în altceva

Rahul Raveendran

Dacă sunteți în căutarea unui răspuns în codul java,

LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setGravity(Gravity.CENTER);
// add children