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);
我正在尝试使用 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);