Reputation: 1212
I have a RecyclerView and that code is the item layout for the recycler.
It's a text message and the time on the right.
If the text is small it works ok.
But when the text is large the time TextView is not shown
I can set maxWidth but I dont want to do it like that. I want to know how to fix the time always in the layout
<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>
EDIT:
First answer comment:
I want to wrap the content is the text is small
EDIT: The solution that works for me is only using 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>
Upvotes: 2
Views: 1959
Reputation: 4132
Use this layout instead.This will solve your problem.
<?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>
Upvotes: 2
Reputation: 5684
Try this : Add weight to your message textview.
<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>
Upvotes: 4
Reputation: 173
As said by @AbhayBohra, use the weight property on the textviews and set the width as 0dp, like this:
<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>
Upvotes: 0
Reputation: 2708
Change your layout a bit like this:
<?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>
Upvotes: 0