是否有用于LinearLayout的替代layout_alignBaseline

时间:2019-06-01 14:29:54

标签: android android-layout

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 个答案:

答案 0 :(得分:1)

您可以尝试这种方法:

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>

答案 1 :(得分:0)

我不知道使用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>

使用左侧的文字大小:17sp12sp,上方文本视图的权重应为17 / (17+12) = 0.59。但是我发现0.57具有更好的对齐方式。

enter image description here