LinearLayout上的Textview重叠

时间:2017-10-17 12:02:57

标签: android android-layout

我有一个RecyclerView,该代码是回收商的项目布局。

这是一条短信和右边的时间。

如果文字很小,那就行了。 enter image description here 但是当文本很大时,TextView的时间不会显示 enter image description here

我可以设置maxWidth,但我不想这样做。我想知道如何在布局

中总是固定时间
<LinearLayout
    android:id="@+id/layout_message"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="left">
    <TextView
        android:id="@+id/tv_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/TextAppearance.AppCompat.Body1"
        android:text="Hello Mike bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla "
        android:layout_margin="10dp"
        />

    <TextView
        android:id="@+id/tv_msg_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10sp"
        android:text="10:20"
        android:layout_marginRight="10dp"
        android:layout_marginTop="15dp"
        android:layout_marginBottom="5dp"
        />

</LinearLayout>

修改: 第一个回答评论: enter image description here 我要包装的内容是文字很小

修改: 适用于我的解决方案仅使用android:maxWidth

<LinearLayout
    android:id="@+id/layout_message"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="left">
    <TextView
        android:id="@+id/tv_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxWidth="320dp"
        style="@style/TextAppearance.AppCompat.Body1"
        android:text="la lalala la lalala la lalala la lalala la lalala la lalala la lalala la lalala la lalala la lalala la lalala la lalala la lalala la lalala la lalala la lalala @string/prompt_message"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginBottom="15dp"
        />

    <TextView
        android:id="@+id/tv_msg_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10sp"
        android:text="10:20"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="2dp"
        android:layout_gravity="bottom"

        />

</LinearLayout>

4 个答案:

答案 0 :(得分:2)

试试这个:在消息文本视图中添加权重

enter image description here

<LinearLayout
    android:id="@+id/layout_message"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="left">
    <TextView
        android:id="@+id/tv_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/TextAppearance.AppCompat.Body1"
        android:text="Hello Mike bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla "
        android:layout_margin="10dp"
        android:layout_weight="1"/>

    <TextView
        android:id="@+id/tv_msg_time"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textSize="10sp"
        android:text="10:20"
        android:layout_marginRight="10dp"
        android:layout_marginTop="15dp"
        android:layout_marginBottom="5dp"
        android:gravity="bottom"/>

</LinearLayout>

答案 1 :(得分:1)

请改用此布局。这样可以解决您的问题。

  <?xml version="1.0" encoding="utf-8"?>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/tv_message"
        style="@style/TextAppearance.AppCompat.Body1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingRight="30dp"
        android:text="Hello Mike bla bla bla  bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla " />

    <TextView
        android:id="@+id/tv_msg_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/tv_message"
        android:layout_marginBottom="5dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="15dp"
        android:text="10:20"
        android:textColor="@android:color/black"
        android:textSize="10sp" />

</RelativeLayout>

答案 2 :(得分:0)

更改您的布局有点像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/layout_message"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="1"
    android:gravity="start">
    <TextView
        android:id="@+id/tv_message"
        android:layout_width="0dp"
        android:layout_weight=".85"
        android:layout_height="wrap_content"
        style="@style/TextAppearance.AppCompat.Body1"
        android:text="Hello Mike bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla "
        android:layout_margin="10dp"
        />

    <TextView
        android:id="@+id/tv_msg_time"
        android:layout_width="0dp"
        android:layout_weight=".15"
        android:layout_height="wrap_content"
        android:textSize="10sp"
        android:text="10:20"
        android:layout_marginRight="10dp"
        android:layout_marginEnd="10dp"
        android:layout_marginTop="15dp"
        android:layout_marginBottom="5dp"
        />

</LinearLayout>

答案 3 :(得分:0)

正如@AbhayBohra所说,在textviews上使用weight属性并将宽度设置为0dp,如下所示:

<LinearLayout
    android:id="@+id/layout_message"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="left">
<TextView
    android:id="@+id/tv_message"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
android:layout_weight="7"
    style="@style/TextAppearance.AppCompat.Body1"
    android:text="Hello Mike bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla "
    android:layout_margin="10dp"
    />
<TextView
    android:id="@+id/tv_msg_time"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
android:layout_weight="2"

    android:textSize="10sp"
    android:text="10:20"
    android:layout_marginRight="10dp"
    android:layout_marginTop="15dp"
    android:layout_marginBottom="5dp"
    />

</LinearLayout>