Есть ли альтернатива layout_alignBaseline для LinearLayout - PullRequest
0 голосов
/ 01 июня 2019

Demo_picture

Я хочу сделать Fold справа, выровненным по базовой линии Hello.

Мне было интересно, могу ли я сделать это в LinearLayout?

<?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="wrap_content"
        android:layoutDirection="locale"
        android:textDirection="locale"
        android:orientation="horizontal">

    <LinearLayout
            android:id="@+id/text_views"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:orientation="vertical">

        <TextView
                android:id="@+id/header"
                android:text="Hello"
                android:textSize="17sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:includeFontPadding="false"
        />

        <TextView
                android:id="@+id/description_text"
                android:text="Just say hello to everybody"
                android:textSize="12sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:includeFontPadding="false"
        />
    </LinearLayout>

    <Space
            android:layout_width="0dp"
            android:layout_height="1dp"
            android:layout_weight="1"
    />

    <TextView
            android:id="@+id/dismiss_btn"
            android:text="Fold"
            android:textSize="13sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:includeFontPadding="false"
            android:layout_alignBaseline="@+id/header"
            android:layout_gravity="center|end"
    />
</LinearLayout>

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Вы можете попробовать этот подход:

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layoutDirection="locale"
    android:orientation="vertical"
    android:textDirection="locale">
        <TextView
            android:id="@+id/header"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:includeFontPadding="false"
            android:text="Hello"
            android:layout_alignParentStart="true"
            android:gravity="bottom"
            android:textSize="17sp" />
        <TextView
            android:id="@+id/dismiss_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:includeFontPadding="false"
            android:layout_alignBaseline="@+id/header"
            android:layout_alignParentEnd="true"
            android:text="Fold"
            android:textSize="13sp" />
        <TextView
            android:id="@+id/description_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:includeFontPadding="false"
            android:layout_below="@+id/space"
            android:text="Just say hello to everybody"
            android:textSize="12sp" />
    <Space
        android:id="@+id/space"
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_below="@+id/header"
        android:layout_weight="1" />
</RelativeLayout>
0 голосов
/ 02 июня 2019

Я не знаю, целесообразно ли использовать weight для эмуляции android:layout_alignBaseline, но, похоже, работает.

<?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="wrap_content"
        android:layoutDirection="locale"
        android:textDirection="locale"
        android:orientation="horizontal">

    <LinearLayout
            android:id="@+id/text_views"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:orientation="vertical">

        <TextView
                android:id="@+id/header"
                android:text="Hello"
                android:textSize="17sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:includeFontPadding="false"
        />

        <TextView
                android:id="@+id/description_text"
                android:text="Just say hello to everybody"
                android:textSize="12sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:includeFontPadding="false"
        />
    </LinearLayout>

    <Space
            android:layout_width="0dp"
            android:layout_height="1dp"
            android:layout_weight="1"
    />

    <LinearLayout
            android:id="@+id/text_label"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:orientation="vertical">
    <TextView
            android:id="@+id/dismiss_btn"
            android:text="Fold2"
            android:textSize="13sp"
            android:layout_width="wrap_content"
            android:layout_weight="0.57"
            android:layout_height="0dp"
            android:includeFontPadding="false"
            android:layout_gravity="center|end"
            android:gravity="bottom"
    />
        <Space
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="0.43"
        />
    </LinearLayout>
</LinearLayout>

С размерами текста слева: 17sp & 12sp, вес верхнего текстового обзора должен быть 17 / (17+12) = 0.59. Но я обнаружил, что 0.57 лучше выровнять.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...