textview会把右边控件挤出屏幕外的问题

普通的textview后面跟一个控件的状况仍是不较好解决的, 好比这样的:android

状况1、

姓名textview后面跟随一个性别的textview, 姓名只显示一行超过一行显示“...”,若是布局这样写:

<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">

        <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginRight="10dp" android:ellipsize="end" android:maxLines="1" android:textColor="@color/color_333333" android:textSize="16sp" tools:text="杨洋洋" />

        <TextView android:id="@+id/tv_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="女" />

        <TextView android:id="@+id/tv_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginStart="10dp" android:layout_marginLeft="10dp" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="28岁" />
    </LinearLayout>
复制代码

当名字很长的时候你会发现后面的性别和年龄被挤没了; markdown

这个解决办法也很简单,给名字的textview设置 android:layout_weight="1" 就能够了;布局

<TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginRight="10dp" android:ellipsize="end" android:maxLines="1" android:textColor="@color/color_333333" android:textSize="16sp" tools:text="杨洋洋" />
复制代码

这样;post

状况2、

状况3、

像是这种布局若是名字字数比较少直接用相对布局来作就能够了,不会有什么问题;若是遇到变态产品说名字的字数最多有18个或者更多,那就会出现问题了。 spa

<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:background="@color/color_ffffff" android:paddingStart="16dp" android:paddingLeft="16dp" android:paddingTop="16dp" android:paddingEnd="8dp" android:paddingRight="8dp">

    <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="10dp" android:layout_marginRight="10dp" android:textColor="@color/color_333333" android:textSize="16sp" tools:text="杨洋洋" />

    <TextView android:id="@+id/tv_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/tv_name" android:layout_toEndOf="@+id/tv_name" android:layout_toRightOf="@+id/tv_name" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="女" />

    <TextView android:id="@+id/tv_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/tv_name" android:layout_marginStart="10dp" android:layout_marginLeft="10dp" android:layout_toEndOf="@+id/tv_sex" android:layout_toRightOf="@+id/tv_sex" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="28岁" />

    <TextView android:id="@+id/tv_posttime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/tv_name" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:textColor="@color/color_999999" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="刚刚" />
</RelativeLayout>
复制代码

解决办法其实和第一种同样,核心都是让名字textview外面包裹一层布局好比 Linearlayout ,而且设置宽度为 wrap_content,而后textview加上 android:layout_weight="1";code

<RelativeLayout android:id="@+id/top_lay" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">

    <LinearLayout android:id="@+id/top_name_lay" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal">

        <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">

            <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="10dp" android:layout_marginRight="10dp" android:layout_weight="1" android:textColor="@color/color_333333" android:textSize="16sp" tools:text="杨洋洋" />

            <TextView android:id="@+id/tv_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="女" />

            <TextView android:id="@+id/tv_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginStart="10dp" android:layout_marginLeft="10dp" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="28岁" />
        </LinearLayout>
    </LinearLayout>

    <TextView android:id="@+id/tv_posttime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/top_name_lay" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="刚刚" />
</RelativeLayout>
复制代码

// TODO 先记录有时间再完善orm

相关文章
相关标签/搜索