我有一个列表视图来显示聊天中的消息。我想在左侧显示收到的消息,在右侧显示已发送的消息。请考虑对齐包含的视图是不够的,因为我需要显示条目的背景,并且背景也应该对齐。所以整个条目应该对齐。
有没有办法做到这一点?
我尝试使用android:layout_gravity="right"
但没有用。
我设法通过使用来做到这一点:
LayoutParams params = (LayoutParams) frame.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, alignRight?0:1);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, alignRight?1:0);
frame.setLayoutParams(params);
重要的是我必须在 RelativeLayout 中为我的条目添加一个框架,因为 params.addRule 仅适用于 RelativeLayout。如果您尝试对传递给 bindView 的视图执行相同操作,则会得到一个不支持 addRule 的不同 LayoutParam
当然!你需要一个适配器。在适配器中,当您为 ListItem 充气时,只需为发送和接收的消息充气不同的项目!
您可以尝试使用在适配器中以编程方式设置参数LayoutParams
。
已发送消息的内容类似于以下内容:
LinearLayout ll = (LinearLayout) findViewById(R.id.MyLinearLayout);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)ll.getLayoutParams();
params.gravity = Gravity.RIGHT;
ll.setLayoutParams(params);
对于收到的消息,反之(将 RIGHT 更改为 LEFT)。