layout_gravity не работает с горизонтальной ориентацией в LinearLayout - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу выровнять текст и изображение в LinearLayout в одной строке.Я думал об использовании опции layout_gravity для TextView и ImageView в LinearLayout с orientation=horizontal, но, похоже, это не работает.Любая причина, почему это?

Очевидно, layout_gravity работает только с orientation=vertical.

Я могу сделать это, используя несколько линейных макетов в пределах основного линейного макета, но искал элегантный способ сделать это.

Вот код для того же:

<?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="match_parent"
    android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:background="#e3e2ad"
            android:orientation="vertical" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:textSize="24sp"
                    android:text="Layout's Vertical Orientation" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#bcf5b1"
                    android:layout_gravity="left"
                    android:text="left" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:src="@drawable/pigeon"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:background="#d6c6cd"
            android:orientation="vertical" >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:textSize="24sp"
                    android:text="Layout's Horizontal Orientation" />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="horizontal">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="#bcf5b1"
                            android:layout_gravity="left"
                            android:text="left" />

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="right"
                            android:src="@drawable/pigeon"/>
                </LinearLayout>

        </LinearLayout>

</LinearLayout>

А вот вывод: enter image description here

Я уже проверил ответ на этот вопрос здесь, но он не решил эту проблему. Разница между гравитацией и layout_gravity на Android

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Используйте другой относительный макет внутри линейного макета и добавьте текстовое представление и изображение под ним.Затем вы выровняете их в одной строке.

<?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="match_parent"
    android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:background="#e3e2ad"
            android:orientation="vertical" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:textSize="24sp"
                    android:text="Layout's Vertical Orientation" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#bcf5b1"
                    android:layout_gravity="left"
                    android:text="left" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:src="@drawable/pigeon"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:background="#d6c6cd"
            android:orientation="vertical" >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:textSize="24sp"
                    android:text="Layout's Horizontal Orientation" />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="horizontal">
                 <RelativeLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="#bcf5b1"
                            //android:layout_weight="0.5"

                            android:layout_gravity="left"
                            android:text="left" />

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="right"
                            //android:layout_weight="0.5"

                            android:src="@drawable/pigeon"/>

                           </RelativeLayout>
                </LinearLayout>

        </LinearLayout>

</LinearLayout>

Также попробуйте добавить веса, которые я упоминал выше в комментариях.Это помогло бы

0 голосов
/ 28 декабря 2018

вы можете использовать RelativeLayout, android: layout_alignParentRight = "true", управление находится справа от родительского элемента управления。

 <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#bcf5b1"
            android:text="left" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:src="@drawable/ic_launcher_background"/>
    </RelativeLayout>
0 голосов
/ 28 декабря 2018

замените эту раскладку своим кодом и измените вес в соответствии с вашими требованиями, вы должны передать android:layout_weight вашему ребенку

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_gravity="center_horizontal"
        android:layout_weight="0.33"
        android:text="Layout's Vertical Orientation"
        android:textSize="24sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_gravity="left"
        android:layout_weight="0.33"
        android:background="#bcf5b1"
        android:text="left" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_gravity="right"
        android:layout_weight="0.33"
        android:src="@drawable/pigeon" />

</LinearLayout>
...