Я пытаюсь создать макет сообщения в приложении чата.
Этот макет сообщения должен содержать:
- Текстовое представление сообщения в скругленном прямоугольнике
- Значок проверки состояния сообщения
ImageView
в этом же прямоугольнике - Время отправки сообщения
TextView
за пределами прямоугольника с закругленными углами и справа от него.
Когда текст короткий, весь макет долженвыровнять себя вправо.Когда текст длинный, сообщение TextView
будет расширяться влево, а при касании левой стороны экрана оно расширяется до новой строки.
Проблема в : Прямоугольник со скругленными углами простирается на весь экран независимо от того, является ли сообщение коротким или длинным, хотя для базовой ширины FrameLayout
установлено значение wrap_content.
Вот изображение проблемы:
Используемая мной схема:
<RelativeLayout
android:id="@+id/outer_rl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingTop="8dp">
<TextView
android:id="@+id/text_message_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:textSize="10sp"
app:showDate="@{message.postedAt}" />
<RelativeLayout
android:id="@+id/bubble_ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/text_message_time"
android:background="@drawable/rounded_rectangle_bubble_sent"
android:padding="8dp">
<ImageView
android:id="@+id/iv_check"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_alignParentRight="true"
android:layout_gravity="center_vertical"
android:layout_marginLeft="4dp"
app:setStatusPng="@{message.status}" />
<TextView
android:id="@+id/messagetext_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:layout_marginTop="2dp"
android:layout_toLeftOf="@id/iv_check"
android:singleLine="false"
android:text="@{message.messageText}"
android:textColor="#ffffff" />
</RelativeLayout>
</RelativeLayout>
Внутренняя RelativeLayout
с именем bubble_ll
имеет ширину, равную wrap_content
.
Я ожидаю, что:
- text_message_time TextView должен быть присоединен к правой части экрана из-за его layout_alignParentEnd свойства, установленного в true.
- bubble_ll стоит слева от представления text_message_time , из-за его набора свойств layout_toLeftOf.И его содержимое должно иметь ширину.
Я пробовал другие макеты, такие как Linear, ConstraintLayout и т. Д.
Подход LinearLayout
не работал, так как шириназначение wrap_content
для TextView
всегда перекрывает проверки информации о состоянии, и время сообщения заставляет их исчезать, когда сообщение в TextView
длинное.
При ConstraintLayout
я не мог выровнять пузырь, чтобы оставаться на местеправо.Он остается в центре экрана по горизонтали, поскольку он ограничен обеими горизонтальными сторонами экрана.
Любая помощь будет принята с благодарностью.