gpt4 book ai didi

java - Android RecyclerView 中的不同布局问题

转载 作者:行者123 更新时间:2023-12-01 09:49:46 27 4
gpt4 key购买 nike

我正在应用程序内创建一个信使功能,并希望根据持有者传递的某些值(必须是 START 或 END)更改布局重力。除了重力之外,一切都运转良好。它是在开始时为所有持有者设置的。有什么解决办法吗?

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Message message = mMessageList.get(position);
if(message.getSender().equals("System")){
holder.content.setBackgroundResource(R.drawable.message_bubble_out);
holder.content.setTextColor(Color.parseColor("#000000"));
holder.messageLayout.setGravity(Gravity.END);
}
holder.content.setText(message.getContent());
}

消息布局 XML:

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

<TextView
android:id="@+id/message_content"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:background="@drawable/message_bubble_out"
android:text="Hi, rangertS!"
android:textColor="#FFFFFF" />

</LinearLayout>

messageLayout 定义:

messageLayout = (LinearLayout) view.findViewById(R.id.message_wrapper);

最佳答案

好的,现在您已经对您的问题向我们提供了详细的解释,我想我知道答案了。

看来这不应该归咎于重力。正如我所说,你的绑定(bind)逻辑是正确的。

真正的罪魁祸首是您布置消息布局的方式。让我们看一下我在下面指出的几行:

<LinearLayout
android:id="@+id/message_wrapper"
android:layout_width="wrap_content" <--- Use match_parent instead
android:layout_height="wrap_content"
android:layout_gravity="end"
xmlns:android="http://schemas.android.com/apk/res/android">

<TextView
android:id="@+id/message_content"
android:layout_width="250dp" <--- Use wrap_content instead
android:layout_height="wrap_content"
android:background="@drawable/message_bubble_out"
android:text="Hi, rangertS!"
android:textColor="#FFFFFF" />

</LinearLayout>

您可以在我上面给出的带注释的代码 fragment 中看到问题的两个根本原因。让我们详细说明一下:

  1. 您将 LinearLayout 宽度声明为 wrap_content,这意味着重力在这里永远不会发挥作用。为什么?因为布局的大小始终与其内容完全相同!尝试使您的 LinearLayout 与其父级一样宽,您将看到重力的效果。

  2. 你的TextView的250dp,至少从我的视角来看,有点太大了。有一点理由让 TextView 大于它包含的实际文本。尝试在这里使用wrap_content。

希望这有帮助! :)

关于java - Android RecyclerView 中的不同布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673506/

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