在右侧对齐列表视图中的条目

时间:2012-05-03 11:52:21

标签: android listview alignment

我有一个listview来显示聊天中的消息。我想在左侧显示收到的消息,在右侧显示已发送的消息。 请考虑仅仅对齐包含的视图是不够的,因为我需要显示条目的背景,并且背景也应该对齐。所以整个条目应该是一致的。

有办法吗?

我尝试使用android:layout_gravity="right",但它没有用。

3 个答案:

答案 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)。