2

我想实现像iphone sms这样的接口:

怎么做

现在我有我的自定义 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”,但它在列表视图中不起作用。结果:

我的界面

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

4

4 回答 4

8

将包装器布局添加到将具有and的项目布局(例如 a LinearLayout),这会将内部/调整到正确的位置。layout_width="match_parent"gravitiy="left"/"right"LayoutTextView

一般来说,强烈建议不要使用wrap_contenta 中的项目ListView,这会使ListView'onMeasure方法被重复调用并减慢您的应用程序的速度。

于 2012-05-31T10:51:45.810 回答
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"**
于 2012-05-31T10:59:59.720 回答
1

我目前也在研究这个问题。无法使用此处提到的建议。对我来说,它只能通过使用:linearlayout.setGravity(Gravity.RIGHT);并在适配器方法中setGravity(Gravity.LEFT);扩展标准布局后以编程方式起作用。getView这些线性布局的宽度为 ,wrap_content并且是宽度为 的线性布局的子级match_parent。也不要忘记在每次通过 请求视图时都这样做getView,而不仅仅是 if convertView==null

于 2013-09-07T18:11:12.990 回答
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。这让我熬了好几个小时。

于 2017-06-06T13:57:13.007 回答