LinearLayout 水平重力 setGravity() 无法以编程方式工作

LinearLayout horizontal gravity setGravity() not working programmatically

我正在尝试使用 conatiner.setGravity() 通过代码设置线性布局容器的重力。 但是它不工作但是当通过 xml 完成时它正在工作。 下面是我的布局

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

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/messengerImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:maxWidth="24dp"
        android:maxHeight="24dp"
        android:padding="3dp"
        android:src="@drawable/bubble" />

    <TextView
        android:id="@+id/messageTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="2dp"
        android:layout_marginEnd="85dp"
        android:background="@drawable/rounded_edittext"
        android:fontFamily="monospace"
        android:maxWidth="250sp"
        android:padding="8dp"
        android:textColor="@android:color/black"
        android:textSize="14sp" />

    <ImageView
        android:id="@+id/message_fav"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_gravity="center_vertical"
        android:clickable="true"
        android:src="@drawable/chat_message_fav_selector"
        tools:ignore="ContentDescription" />

</LinearLayout>

使用的代码是:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, 0, 0, 0);
lp.gravity = Gravity.RIGHT;
holder.container.setLayoutParams(lp);

这是一个聊天应用程序,当其他人发送消息时将容器设置为左侧,而当用户发送消息时将容器设置为右侧。

尝试:

lp.setGravity(Gravity.CENTER)

试试这个

chat_container wrap_content 的宽度更改为 match_parent

     android:layout_width="match_parent"

记住重力只在父布局中有额外 space 的地方起作用。

在 xml 代码中,您为线性布局设置了 layout_gravity="left"。 但在 java 代码中,您尝试设置重力。 gravity 和 layout_gravity 是不同的。 在 java 代码中你可以这样做来设置重力:

LinearLayout linearLayout = findViewById(R.id.linearlayout);
    linearLayout.setGravity(Gravity.LEFT);