シンプルなチャット機能を備えたBlackBerryアプリケーションを開発しました。Vertical Field Manager (VFM)
ユーザーがをクリックすると、チャットメッセージが内に表示されます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の最後のメッセージに配置する代わりに、毎回最後から2番目のメッセージにスクロールします。なんでそうなの?VFMの最後のメッセージまでスクロールする必要があります。VFMの一番下にあります。