水平方向的线性布局使文本在长度增加时不可见

时间:2017-09-11 10:34:29

标签: android textview android-linearlayout

Android水平布局(水平方向)使得下一个TextView在第一个文本的长度增加时不可见。如果第一个文本视图长度超过一行,则剩余的文本视图将不可见。我只想环绕文本,即,如果第一个textview的长度增加,剩下的视图应该在第一个视图下。

我可以在不以编程方式更改方向的情况下实现吗?

我的代码如下:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <com.mikhaellopez.circularimageview.CircularImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_margin="15dp"
        android:scaleType="centerCrop"
        app:civ_border_color="@color/colorAccent"
        app:civ_border_width="5dp"
        app:civ_border="true"
        android:src="@drawable/user"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="80dp"
        android:layout_marginStart="80dp"
        android:layout_marginEnd="35dp"
        android:layout_marginRight="35dp"
        android:layout_marginTop="15dp"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/app_name"
            android:maxLines="2"
            android:textColor="@android:color/black"
            android:textSize="16sp"
            android:ellipsize="end"
            android:layout_margin="3dp"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_margin="3dp">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/app_name"
                android:ellipsize="end"
                android:maxLines="1"
                android:textSize="14sp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/period"
                android:textSize="16sp"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginRight="8dp"
                android:layout_marginEnd="8dp" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/views"
                android:textSize="14sp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/period"
                android:textSize="16sp"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginRight="8dp"
                android:layout_marginEnd="8dp" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/hoursago"
                android:textSize="14sp"/>
        </LinearLayout>
    </LinearLayout>
    <ImageButton
        android:id="@+id/popup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end|center"
        android:background="@null"
        android:clickable="true"
        android:padding="5dp"
        android:layout_margin="5dp"
        android:layout_centerInParent="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:src="@drawable/ic_overflow_grey_24dp" />
</RelativeLayout>

我将屏幕设为

enter image description here

2 个答案:

答案 0 :(得分:1)

尝试将以下内容添加到linearLayout

android:weightSum="1"

然后在每个TextView中添加允许它们存在多少。

android:layout_weight="your value here"

一个例子可能是

android:layout_weight="0.2"

现在允许填充20%的linearLayout。

答案 1 :(得分:0)

您可以通过将LinearLayout Weights指定为代码

进行归档
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.mikhaellopez.circularimageview.CircularImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_margin="15dp"
    android:scaleType="centerCrop"
    app:civ_border_color="@color/colorAccent"
    app:civ_border_width="5dp"
    app:civ_border="true"
    android:src="@drawable/user"/>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="80dp"
    android:layout_marginStart="80dp"
    android:layout_marginEnd="35dp"
    android:layout_marginRight="35dp"
    android:layout_marginTop="15dp"
    android:orientation="vertical">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:maxLines="2"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        android:ellipsize="end"
        android:layout_margin="3dp"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_margin="3dp"
        android:weightSum="8">
        <TextView
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="StramTube"
            android:ellipsize="end"
            android:maxLines="1"
            android:textSize="14sp"
            />
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="*"
            android:textSize="16sp"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginEnd="8dp" 
            android:layout_weight="1"/>
        <TextView
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="view"
            android:textSize="14sp"/>
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="*"
            android:textSize="16sp"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginEnd="8dp"
            android:layout_weight="1"/>
        <TextView
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Hours ago"
            android:textSize="14sp"/>
    </LinearLayout>
</LinearLayout>
<ImageButton
    android:id="@+id/popup"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end|center"
    android:background="@null"
    android:clickable="true"
    android:padding="5dp"
    android:layout_margin="5dp"
    android:layout_centerInParent="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:src="@drawable/ic_overflow_grey_24dp" />