【发布时间】:2016-02-11 09:32:15
【问题描述】:
您好
我已经构建了一个聊天应用程序,它使用带有自定义列表项 xml 的列表视图来在屏幕上显示聊天消息。
我的应用程序将在左侧或右侧显示一个文本视图,具体取决于消息来自谁。它通过将文本设置为右侧或左侧文本视图,然后显示和隐藏相关视图来做到这一点。
我的问题是,无论我如何尝试在自定义列表项中排列视图,它们将始终出现在屏幕的左侧。我尝试在我的xml中设置重力,以编程方式设置它,使用fill_parent,使用加权视图。它只是不会从左边让步!有没有人对此有解决方案或可以看到我哪里出错了?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.chat_item, parent, false);
final ViewHolder holder = new ViewHolder();
holder.chatRight = (TextView)convertView.findViewById(R.id.tvChatBubbleRight);
holder.chatLeft = (TextView)convertView.findViewById(R.id.tvChatBubbleLeft);
convertView.setTag(holder);
}
final ParseChat parseChat = (ParseChat)getItem(position);
final ViewHolder holder = (ViewHolder)convertView.getTag();
final boolean isMe = parseChat.getSender().equals(mUserId);
// Show-hide image based on the logged-in user.
// Display the profile image to the right for our user, left for other users.
if (isMe) {
holder.chatRight.setText(parseChat.getMessage());
holder.chatRight.setGravity(Gravity.RIGHT);
holder.chatRight.setVisibility(View.VISIBLE);
holder.chatLeft.setVisibility(View.GONE);
}
else {
holder.chatLeft.setText(parseChat.getMessage());
holder.chatLeft.setGravity(Gravity.LEFT);
holder.chatLeft.setVisibility(View.VISIBLE);
holder.chatRight.setVisibility(View.GONE);
}
return convertView;
}
chat_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:textSize="18sp"
android:id="@+id/tvChatBubbleLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/chat_bubble_left"
android:layout_gravity="left"
android:layout_weight="1"
android:gravity="left">
</TextView>
<TextView
android:textSize="18sp"
android:id="@+id/tvChatBubbleRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/chat_bubble_right"
android:layout_gravity="right"
android:gravity="right"
android:layout_weight="1">
</TextView>
</LinearLayout>
谢谢
【问题讨论】:
-
请发布您的
chat_item.xml
标签: android listview arraylist android-listview listadapter