我的Recyclerview是一个消息列表。
每个项目都是一个宽度为wrap_content
的线性布局。
问题在于,当插入新项目时,如果项目更大,则该项目将采用前一项目的宽度(这使得它看起来像有一个大填充)
我在ViewHolder构造函数中尝试setRecycable(false)
,但这会导致一些问题,我想使用不同的方法。
感谢任何帮助。 感谢
编辑:布局:
<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;
}
答案 0 :(得分:1)
您可以在适配器中试用吗
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
holder.itemView.requestLayout();
}
这可能会迫使布局重新计算其尺寸
答案 1 :(得分:0)
使用此
更新您的上述内容 @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, null, false);
break;
case INCOMING:
v = inflater.inflate(R.layout.chat_bubble_incoming, null, false);
break;
}
viewHolder = new ChatMessagesAdapter.ViewHolder(v);
return viewHolder;
}
并使用holder.setIsRecyclable(false);
的结束行中的onBindViewHolder
。
答案 2 :(得分:0)
这可能对您有所帮助
{
"og_object": {
"id": "246649445486535"
},
"id": "https://developers.facebook.com/docs/plugins/comments"
}