如何将发送者的消息放在左侧,将接收者的消息放在右侧

时间:2018-05-24 20:54:24

标签: java android xml

现在我有了这个:

enter image description here

我的所有邮件(发件人和收件人)都在一边,但我希望它们像您的Messenger或IMessage这样的典型邮件应用程序,这就是我想要实现的目标:

enter image description here

我的适配器:

if(from_user.equals(current_user_id)){
        viewHolder.messageText.setBackgroundResource(R.drawable.message_back_other);
        viewHolder.messageText.setTextColor(Color.BLACK);
    }else{
        viewHolder.messageText.setBackgroundResource(R.drawable.message_back);
        viewHolder.messageText.setTextColor(Color.WHITE);  
    }

这是我的消息背景的xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorPrimary"/>
<corners android:radius="30dp"/>

2 个答案:

答案 0 :(得分:1)

我在消息列表的左侧和右侧使用不同的xml布局文件。

在我Adapter我检查是否发送了邮件或收到了邮件:

        if(isMe) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.message_right, parent, false);
        }
        else{
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.message_left, parent, false);
        }
    }

从您不需要的xml布局文件中删除视图。

我左边的xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
    >

    <TextView
        android:id="@+id/tvDate"
        android:text="12/12/2017"
        android:textSize="@dimen/message_time_text_size"
        android:textAlignment="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginEnd="20dp"
        android:paddingBottom="8dp"
        android:paddingStart="10dp"
        android:paddingEnd="1dp"
        android:paddingTop="5dp"
        android:textColor="@color/ride_message_time_color"
        android:visibility="gone"
        />

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/tvMessage"
            android:gravity="start"
            android:text="Blank Message"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@drawable/message_textview_left"
            android:layout_marginBottom="5dp"
            android:layout_marginStart="1dp"
            android:layout_marginEnd="10dp"
            android:paddingBottom="8dp"
            android:paddingStart="10dp"
            android:paddingEnd="10dp"
            android:paddingTop="5dp"
            android:textColor="@color/black"
            android:layout_weight="7"
            />
        <TextView
            android:id="@+id/tvTime"
            android:text="11:00 PM"
            android:layout_width="0dp"
            android:textSize="@dimen/message_time_text_size"
            android:textAlignment="textStart"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginStart="1dp"
            android:layout_marginEnd="20dp"
            android:paddingBottom="8dp"
            android:paddingStart="5dp"
            android:paddingEnd="10dp"
            android:paddingTop="5dp"
            android:textColor="@color/ride_message_time_color"
            android:layout_weight="2"
            />
    </LinearLayout>
</LinearLayout>

我的右边xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
    >

    <TextView
        android:id="@+id/tvDate"
        android:text="12/12/2017"
        android:textSize="@dimen/message_time_text_size"
        android:textAlignment="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginEnd="20dp"
        android:paddingBottom="8dp"
        android:paddingStart="10dp"
        android:paddingEnd="1dp"
        android:paddingTop="5dp"
        android:textColor="@color/ride_message_time_color"
        android:visibility="gone"
        />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/tvTime"
            android:text="12:30 PM"
            android:textSize="@dimen/message_time_text_size"
            android:textAlignment="textEnd"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginEnd="20dp"
            android:paddingBottom="8dp"
            android:paddingStart="10dp"
            android:paddingEnd="1dp"
            android:paddingTop="5dp"
            android:textColor="@color/ride_message_time_color"
            android:layout_weight="2"
            />
        <TextView
            android:id="@+id/tvMessage"
            android:layout_gravity="end"
            android:text="Blank Message"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@drawable/message_textview_right"
            android:layout_marginBottom="5dp"
            android:layout_marginStart="1dp"
            android:layout_marginEnd="1dp"
            android:paddingBottom="8dp"
            android:paddingStart="10dp"
            android:paddingEnd="10dp"
            android:paddingTop="5dp"
            android:textColor="@color/black"
            android:layout_weight="7"
            />
    </LinearLayout>
</LinearLayout>

答案 1 :(得分:0)

对发件人与收件人的邮件使用不同的项目类型。这样您就可以在不同的布局中为每个布局设置背景颜色,文本颜色和重力。