My Recyclerview - это список сообщений.RecyclerView items wrap_content width
Каждый элемент является линейным расходом с шириной wrap_content
.
Проблема заключается в том, что, когда новый элемент вставляется, элемент будет принимать ширину предыдущего элемента, если он больше (что делает его похожим на него есть большой отступы)
Я попытался setRecycable(false)
в ViewHolder конструктора, но что вызвало некоторые проблемы, и я хочу использовать другой подход.
Любая помощь приветствуется. Благодаря
EDIT: Layout:
<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="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/message_date_layout"
layout="@layout/time_bubble"/>
<LinearLayout
android:id="@+id/message_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:layout_marginEnd="30dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="30dp"
android:layout_marginStart="6dp"
android:background="@drawable/background_incoming_chat_bubble"
android:orientation="vertical"
android:padding="6dp">
//other views
</LinearLayout>
</LinearLayout>
CraeteViewHolder
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ChatMessagesAdapter.ViewHolder viewHolder;
LayoutInflater inflater = LayoutInflater.from(context);
View v = null;
switch (viewType) {
case OUTGOING:
v = inflater.inflate(R.layout.chat_bubble_outgoing, parent, false);
break;
case INCOMING:
v = inflater.inflate(R.layout.chat_bubble_incoming, parent, false);
break;
}
viewHolder = new ChatMessagesAdapter.ViewHolder(v);
return viewHolder;
}
Пожалуйста, добавьте код. – FiN
@FiN отредактировал исходное сообщение – PampaZiya
вы могли бы поделиться шаблонами 'chat_bubble_outgoing' и' chat_bubble_incoming'? – FiN