我想实现像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”,但它在列表视图中不起作用。结果:
如何将问题消息对齐到右侧?
答案 0 :(得分:8)
为包含LinearLayout
和layout_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。 这让我累了好几个小时。