Я разрабатываю приложение для обмена мгновенными сообщениями для университетского курса, похожее на Whatsapp, как вы могли догадаться, увидев значок на прикрепленном снимке экрана :).
У меня есть ListFragment, который заполняется пользовательским CursorAdapter. Он дает два типа представлений: отправленные сообщения (выравниваются по правому краю) и полученные сообщения (выравниваются по левому краю).
Раскладка отправленных сообщений работает хорошо, но я не могу сказать то же самое о полученных сообщениях.
Вот скриншот:
Макет отправленного сообщения:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="#FFCCCCCC"
android:padding="5dp" >
<TextView
android:id="@+id/ceo_timestamp"
android:layout_width="60sp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="#FFBBBBBB"
android:gravity="center"
android:textSize="10sp" />
<TextView
android:id="@+id/ceo_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/ceo_timestamp"
android:background="#FFAAAAAA"
android:gravity="right"
android:textSize="16sp" />
</RelativeLayout>
</RelativeLayout>
Макет полученного сообщения:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="#FF999999"
android:padding="5dp" >
<TextView
android:id="@+id/cei_timestamp"
android:layout_width="60sp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="#FF888888"
android:gravity="center"
android:textSize="10sp" />
<TextView
android:id="@+id/cei_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/cei_timestamp"
android:background="#FF777777"
android:gravity="right"
android:textSize="16sp" />
</RelativeLayout>
</RelativeLayout>
Эти уродливые цвета фона добавлены только для того, чтобы увидеть место, занимаемое каждым представлением и макетом. Как вы можете видеть на скриншоте, отправка сообщений (с выравниванием по правому краю) работает отлично. Полученные сообщения (с выравниванием по левому краю) не выравниваются должным образом, поскольку RelativeLayout занимает все доступное горизонтальное пространство, а не просто оборачивает содержимое.
Кто-нибудь знает, как это исправить, или, может быть, лучший дизайн макета, чтобы выполнить то, что мне нужно?
Большое спасибо.