首页 > 解决方案 > 无法在布局的单行中显示元素

问题描述

我的Android布局如下:

<LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/notification_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left|bottom"
                android:layout_marginEnd="1dp"
                android:ellipsize="end"
                android:fadingEdge="horizontal"
                android:maxLines="4"
                android:singleLine="false"
                android:textAppearance="@style/Ds6"
                android:textColor="@color/notification_ds6_secondary_text"
                tools:text="Watched item ends in 6 minutes in "
                android:visibility="visible"
                tools:ignore="Deprecated"/>

            <Chronometer
                android:id="@+id/notification_countdown"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:gravity="left|bottom"
                android:maxLines="1"
                android:textAppearance="@style/Ds6"
                android:textColor="@color/notification_ds6_secondary_text"
                android:textSize="@dimen/TextSizeSmall"
                android:visibility="visible"
                tools:text="10:02 AM" />

            <Chronometer
                android:id="@+id/notification_countdown_60s"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="left|bottom"
                android:gravity="left"
                android:maxLines="1"
                android:textColor="@color/alert_color"
                android:textAppearance="@style/Ds6"
                android:textSize="@dimen/TextSizeSmall"
                android:visibility="visible"
                tools:text="10:02 AM" />
            <TextView
                android:id="@+id/notification_time_expired"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="left|bottom"
                android:text="00:00"
                android:textColor="@color/notification_ds6_disabled_text"
                android:textAppearance="@style/Ds6"
                android:textSize="@dimen/TextSizeSmall"
                android:visibility="visible" />
            </LinearLayout>

TextView 和其他视图

我希望文本视图内容正确换行,以适应 Chronometer #1、Chrometer #2 和 Chronometer #3 显示在一行上。较长的文本字符串不会发生这种情况。

但是,如果我减少文本字符串的长度,如下所示,我可以在一行中看到所有元素。如何在一行中显示所有元素?我希望文本换行,但两个计时器和文本视图#2 必须与第一个文本视图位于同一行。

这将显示在通知远程视图中,所以我不能使用 ConstraintLayout。我只能使用 FrameLayout、RelativeLayout 和 LinearLayout。

单行元素

标签: androidandroid-layoutandroid-linearlayout

解决方案


尝试设置android:layout_width="0dp"android:layout_weight="1"在您的notification_content TextView

试试这个方法

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="2dp"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/notification_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_gravity="left|bottom"
        android:layout_marginEnd="1dp"
        android:ellipsize="end"
        android:fadingEdge="horizontal"
        android:maxLines="4"
        android:singleLine="false"
        android:textColor="@color/colorPrimary"
        tools:text="Watched item ends in 6 minutes in "
        android:visibility="visible"
        tools:ignore="Deprecated"/>

    <Chronometer
        android:id="@+id/notification_countdown"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:gravity="left|bottom"
        android:maxLines="1"
        android:textColor="@color/colorPrimary"
        android:visibility="visible"
        tools:text="10:02 AM" />

    <Chronometer
        android:id="@+id/notification_countdown_60s"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="left|bottom"
        android:gravity="left"
        android:maxLines="1"
        android:textColor="@color/colorAccent"
        android:visibility="visible"
        tools:text="10:02 AM" />
    <TextView
        android:id="@+id/notification_time_expired"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="left|bottom"
        android:text="00:00"
        android:textColor="@color/colorPrimary"
        android:visibility="visible" />
</LinearLayout>

推荐阅读