Правильное выравнивание TextViews в RelativeLayout

Я разрабатываю приложение для обмена мгновенными сообщениями для университетского курса, похожее на Whatsapp, как вы могли догадаться, увидев значок на прикрепленном снимке экрана :).

У меня есть ListFragment, который заполняется пользовательским CursorAdapter. Он дает два типа представлений: отправленные сообщения (выравниваются по правому краю) и полученные сообщения (выравниваются по левому краю).

Раскладка отправленных сообщений работает хорошо, но я не могу сказать то же самое о полученных сообщениях.

Вот скриншот:

enter image description here

Макет отправленного сообщения:

<?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 занимает все доступное горизонтальное пространство, а не просто оборачивает содержимое.

Кто-нибудь знает, как это исправить, или, может быть, лучший дизайн макета, чтобы выполнить то, что мне нужно?

Большое спасибо.

6
задан akshay 17 December 2013 в 09:16
поделиться