Listview中的左右对齐行

时间:2012-05-31 10:44:12

标签: android listview

我想实现像iphone sms这样的界面:

how to do

现在,我与自定义ChatAdapter聊天列表视图,来自不同布局的传入和传出消息都在膨胀:

输出布局:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:background="@drawable/question_bubble"
    android:paddingBottom="10dp"
    android:paddingLeft="20dp"
    android:paddingRight="27dp"
    android:paddingTop="10dp"
    android:textColor="@color/BlackColor"
    android:textSize="18sp" />

传入布局:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left"
    android:autoLink="all"
    android:background="@drawable/answer_bubble"
    android:paddingLeft="27dp"
    android:paddingRight="20dp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"    
    android:textColor="@color/BlackColor"
    android:textSize="18sp"/>

我使用“layout_gravity”,但它在列表视图中不起作用。结果:

my interface

如何将问题消息对齐到右侧?

4 个答案:

答案 0 :(得分:8)

为包含LinearLayoutlayout_width="match_parent"的项目布局(例如gravitiy="left"/"right")添加包装器布局,这将调整内部Layout / {{1到正确的位置。

一般情况下,强烈建议您不要将TextView用于wrap_content中的项目,这会使ListView的{​​{1}}方法重复调用并减慢您的速度app down。

答案 1 :(得分:1)

You can try this one:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    **android:layout_width="fill_parent"**
    android:layout_height="wrap_content"
    **android:gravity="right"**

答案 2 :(得分:1)

此刻我也一直在研究这个问题。无法使用此处提到的建议。对我来说,只有在适配器的linearlayout.setGravity(Gravity.RIGHT);方法中膨胀标准布局后,才能以编程方式使用setGravity(Gravity.LEFT);getView。这些线性布局的宽度为wrap_content,并且是线性布局的子级,宽度为match_parent。每次通过getView请求观看时,请不要忘记这样做,不仅仅是convertView==null

答案 3 :(得分:0)

如果遇到此类问题,请确保以这种格式设置文本布局

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

<LinearLayout
    android:id="@+id/bubble_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:background="@drawable/chat_bubble_right">

    <TextView
        android:id="@+id/message_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:maxEms="12"
        android:text="Hi! new message"
        android:textColor="@color/colorWhite"
        android:textSize="15sp" />
</LinearLayout>

请注意,父LinearLayout宽度设置为match_parent,而其他设置为wrap_content。 这让我累了好几个小时。