在ListView中用作项目布局的LinearLayout不会向右移动

时间:2015-09-23 00:54:16

标签: android listview alignment android-linearlayout nine-patch

我试图将右侧的一些ListView项目对齐,但是他们不会从左侧进行预算。 gravity和layout_gravity属性似乎不起作用。

此代码还在XML代码中将布局与右侧对齐,但在填充ListView时不在运行时。

这是我正在使用的XML,它也使用9补丁图像作为LinearLayout的背景:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minHeight="0dp"
    android:background="@drawable/my_9Patch_image"
    android:id="@+id/contentLayout"
    android:orientation="horizontal"
    android:layout_gravity="right"
    android:gravity="right"

    >

    <TextView
        android:layout_width="wrap_content"
        android:maxWidth="330dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="right"
        android:textColor="#e5e5e5"
        android:minHeight="0dp"
        android:singleLine="false"
        android:textSize="16dp">


    </TextView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="10dp"
        android:textColor="#e5e5e5"
        android:minHeight="0dp"
        android:textSize="10dp"
        android:layout_gravity="left|bottom"
        android:gravity="left|bottom"

        />

</LinearLayout>

我还尝试使用以下方法在我的适配器的getView方法中设置params:

 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            params.gravity = Gravity.RIGHT;
            mLinearLayout.setLayoutParams(params);

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我会从http://www.vogella.com/tutorials/AndroidListView/article.html

查看rowbuttonlayout.xml

基本上,您正在尝试更改项目的重力,但是您正尝试从列表视图的外部进行尝试。可能是通过将整个列表视图向右移动来尝试坚持,但列表视图占用了所有空间,因此您甚至不会注意到它 如果您希望左对齐单个元素,您将需要制作左对齐时自定义的自定义单元格,或者创建自己的单元格,并在必要时左对齐该单元格中的内容

答案 1 :(得分:0)

初步解决方案(我会回来的)。这似乎效率低下,但您可以添加另一个LinearLayout来包装其他LinearLayout。取内容LinearLayout并将高度和宽度设置为match_parent,并将gravity属性设置为右。然后将9补丁图像添加到嵌套的LinearLayout,而不是将其放在父容器LinearLayout视图级别,并将其高度和宽度更改为wrap_content。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/contentLayout"
            android:orientation="horizontal"
            android:gravity="right"
               >

            <LinearLayout android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:background="@drawable/purple_right_2"
            >


    <TextView
        android:id="@+id/message_outgoing"
        android:layout_width="wrap_content"
        android:maxWidth="330dp"
        android:layout_height="wrap_content"
        android:textColor="#e5e5e5"
        android:minHeight="0dp"
        android:singleLine="false"
        android:textSize="16dp">

    </TextView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="10dp"
        android:id="@+id/clockView"
        android:textColor="#e5e5e5"
        android:minHeight="0dp"
        android:textSize="10dp"
        android:layout_gravity="left|bottom"
                    />

    </LinearLayout>
    </LinearLayout>