gpt4 book ai didi

android - RecyclerView 项目 wrap_content 宽度

转载 作者:太空狗 更新时间:2023-10-29 13:53:37 31 4
gpt4 key购买 nike

我的 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>

创建ViewHolder

  @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;
}

最佳答案

你能在你的适配器中试试这个吗

      @Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
holder.itemView.requestLayout();
}

也许这会强制布局重新计算其尺寸

关于android - RecyclerView 项目 wrap_content 宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42246557/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com