Android 想要在另一个内部对齐linearlayout,但setGravity()不起作用

Android 想要在另一个内部对齐linearlayout,但setGravity()不起作用,android,android-layout,Android,Android Layout,我试图以编程方式将一个线性布局与另一个线性布局对齐,但是setGravity(Gravity.RIGHT)不起作用 我知道gravity和layout\u gravity之间的区别 以下是xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pa

我试图以编程方式将一个线性布局与另一个线性布局对齐,但是
setGravity(Gravity.RIGHT)
不起作用

我知道
gravity
layout\u gravity
之间的区别

以下是xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<LinearLayout
    android:id="@+id/initial_wrapper"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >

    <LinearLayout
        android:id="@+id/conversationwrapper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/bubble_yellow"
        >

        <TextView
            android:id="@+id/messagecontent_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="5dip"
            android:paddingLeft="10dip"
            android:text="Message_content"
            android:textSize="15dp" />
        <TextView
            android:id="@+id/timestamp_tv"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:text="HH:MM"
            android:ems="2"
            android:textSize="12dp" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
但它总是碰巧在左边,即使图像是绿色的

奇怪的是如果我打字

android:gravity="right"
在初始_包装中,它在预览中工作,但在设备中不工作


我使用的是Moto G和Nexus 5,但两者都不起作用。问题可能就在这里:
android:layout\u width=“fill\u parent”
,如果你的布局填满了整个家长,你应该如何设置
android:gravity=“right”
?你应该尝试使用

<LinearLayout
    android:id="@+id/initial_wrapper"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >

而不是:

<LinearLayout
    android:id="@+id/initial_wrapper"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >

执行此操作

<LinearLayout
android:id="@+id/initial_wrapper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity = "left"
>

希望它有帮助

不相关,您在线性布局中缺少方向标记。@Skynet在没有方向时被视为水平“重力”始终应用于内容(当您的布局最大化wrt维度(匹配父级或固定大小)时有意义),而layout_重力应用于布局(您需要包装内容或固定大小才能使其有意义).OP在分配方式上是正确的gravity@humblerookie但在这段代码中,这个内容应该填充整个家长,所以我认为他需要尝试this@nikmyers我一开始试过了,但我也读到了布局重力和重力的区别,这是重力,我想做的事情我试过了,但没有成功。改变了最初的包装r宽度来包装内容,但它在编辑器中甚至没有正确显示:/但是谢谢你!对不起,先生,我在检查我的编辑时犯了一个小错误。@JavierLunaMolinait崩溃:java.lang.ClassCastException:android.widget.AblistView$LayoutParams不能转换为android.widget.LinearLayout$LayoutParamshmm…我很糟糕..我有rolledback my edit.你说这行不行吗?先生,请在getView
initial\u wrapper.setGravity(!coment.mine?Gravity.LEFT:Gravity.RIGHT)中删除这一行
试试我目前给出的代码,将包装内容作为初始包装的宽度@JavierLunaMolinaNow它没有崩溃,但不起作用……这真让我抓狂
<LinearLayout
android:id="@+id/initial_wrapper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity = "left"
>
LinearLayout.LayoutParams lp = initial_wrapper.getLayoutParams();//will need to casting  
lp.gravity=   Gravity.RIGHT; // this is the important part
initial_wrapper.setLayoutParams(lp);