我有一个listview来显示聊天中的消息。我想在左侧显示收到的消息,在右侧显示已发送的消息。 请考虑仅仅对齐包含的视图是不够的,因为我需要显示条目的背景,并且背景也应该对齐。所以整个条目应该是一致的。
有办法吗?
我尝试使用android:layout_gravity="right"
,但它没有用。
答案 0 :(得分:1)
我设法使用:
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
答案 1 :(得分:0)
当然! 你需要一个适配器。在适配器中,当您为ListItem充气时,只需为发送和接收的消息充气不同的项目!
答案 2 :(得分:0)
您可以尝试使用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)。