我正在建立一个非常简单的在线聊天室App。我现在取得的成就如下:
Robert:blah..
Tom: yes blah..
David(You): That sounds cool!
Lily: Do you know blah...
Robert:blah..
Robert:blah..
David(You): Wow! Blah...
我面临的新功能/问题是我希望当前用户的会话显示在右侧。 如下所示(这是大卫在他的屏幕上看到的):
Robert:blah..
Tom: yes blah..
That sounds cool! : David(You)
Lily: Do you know blah...
Robert:blah..
Robert:blah..
Wow! Blah... : David(You)
上面的每一行都是TextView,只要有新消息,我就会动态创建TextView,然后将它们添加到包含这些TextView的LinearLayout
。为了使David(当前用户)的谈话正确,我尝试设置右对齐,并将LinearLayout
更改为RelativeLayout
。但是后来我意识到,一旦我使用RelativeLayout
,所有谈话都在相同的行中,因为我没有设置他们的高度。有人可以解释如何实现这一点吗?我的代码如下:
...
//new messages are stored in lines[]
for (int i = 0; i < lines.length; i++) {
TextView newLine = new TextView(getBaseContext());
newLine.setText(lines[i]);
// check if the speaker of this line is user himself
if (speakerName.equals(userName)) {
//change the layout of this textView to make it align right..
}
myLinearView.addView(newLine);//add to linearView that contains these talks
}
答案 0 :(得分:2)
正如Chor WaiChun所提到的,你肯定需要使用ListView。但是,使用相对布局执行此操作的方法是为视图设置RelativeLayout.layoutParams,并将规则设置为layout_below上一个视图。就像你在XML中一样。
此外,即使您坚持每行添加1个视图(如前所述,使用ListView),也没有理由不使用LinearLayout。您可以使用右对齐文本的LinearLayout,只需将重力设置为右。