Android Firebase: перекрытие фона сообщений чата

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

** Это карта сообщений

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/chattttt_linearlayout"
    android:gravity="end">

    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="wrap_content"
        card_view:cardCornerRadius="10dp"
        card_view:contentPadding="10dp"
        card_view:cardElevation="4dp"
        card_view:cardMaxElevation="6dp"
        android:layout_gravity="end"
        android:id="@+id/carddddd"
        android:layout_height="wrap_content"
        android:layout_margin="3dp">


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">


            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/sender_text_right"
                android:text="Hi , How are you?"
                android:padding="5dp"
                android:maxWidth="250dp"
                android:textSize="20sp" />
        </LinearLayout>
    </android.support.v7.widget.CardView>

</LinearLayout>

** Это FirebaseRecyclerAdapter для ChatActivity.

@Override
protected void onStart() {
    super.onStart();

    final FirebaseRecyclerAdapter<Chat, MessageViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Chat, MessageViewHolder>(
            Chat.class,
            R.layout.message_card_right,
            MessageViewHolder.class,
            messagesDatabase
    ) {


        @Override
        protected void populateViewHolder(MessageViewHolder viewHolder, Chat model, final int position) {
            viewHolder.setTextt(model.getText());
            isMe = model.getUid();
            if (isMe != null && !isMe.equals(currentCustomerUID)) {
                viewHolder.messageLinearLayout.setGravity(Gravity.START);
                viewHolder.messageText.setTextColor(getResources().getColor(android.R.color.black));

            } else {
                viewHolder.messageLinearLayout.setGravity(Gravity.END);
                viewHolder.messageText.setTextColor(getResources().getColor(android.R.color.white));
                viewHolder.messageCardView.setBackgroundResource(R.drawable.bubble_in);
            }

        }


    };
    MessageList.setAdapter(firebaseRecyclerAdapter);


}

person Community    schedule 24.12.2016    source источник


Ответы (1)


Я думаю, вам также следует добавить эту строку, чтобы убедиться, что ваш CardView получает предпочитаемый вами фоновый ресурс:

        if (isMe != null && !isMe.equals(currentCustomerUID)) {
            ....
            viewHolder.messageCardView.setBackgroundResource(R.drawable.bubble_out);

        } else {
            ...
        }

Не забудьте заменить R.drawable.bubble_out на свой собственный ресурс для рисования. У меня тоже была эта проблема, и я так и сделал. С тех пор ничего не пошло не так.

person koceeng    schedule 25.12.2016