我开发了一个带有简单聊天功能的 BlackBerry 应用程序。Vertical Field Manager (VFM)
当用户单击时,聊天消息出现在 a中Send
。用户可以发送多条消息。发送的每条新消息都显示在旧消息下方。这样一来,规模Vertical Field Manager
不断扩大。我创建了一个可滚动的VFM
,因此用户可以查看通过向下滚动发送的最新消息。发送消息时是否可以自动滚动到 VFM 底部,以便将焦点设置在最后一条消息上?
我也试过打电话vfm.setVerticalScroll(int y);
,LabelField chat1 = new LabelField( "Hi", Field.FIELD_LEFT|Field.FOCUSABLE);
但这没有帮助。请指导。
vr2
= 垂直现场经理
chat1
= 聊天消息添加到 VFM
编辑:我在 StackOverFlow 上看到了这个链接,并在我的代码中应用了如下更改:
vr2.setVerticalScroll(vr2.getVirtualHeight());
LabelField chat1 = new LabelField( "Hi", Field.FIELD_LEFT)
{
protected void applyTheme(Graphics g, boolean arg1)
{
g.setColor(Color.DEEPSKYBLUE);
super.applyTheme(g, arg1);
}
};
Font myFont = Font.getDefault().derive(Font.BOLD, 8, Ui.UNITS_pt);
chat1.setFont(myFont);
chat1.setBorder( leftBorder );
chat1.setMargin( 0, 0, -15, 0);
vr2.setBorder(bdr);
vr2.add(chat1);
Field f;
int i = vr2.getFieldCount();
f = vr2.getField(i-1); //getFieldCount, gets total number of fields
f.setFocus();
这使我非常接近我正在寻找的解决方案。VFM 滚动低于正常值。但是,它不是定位到 VFM 中的最后一条消息,而是每次滚动到倒数第二条消息。为什么会这样?它应该滚动到 VFM 中的最后一条消息;就在 VFM 的底部。