ListField
アプリにを使用して、データをリストに表示しています。今、私の要件は、リストの選択されたアイテムの行の高さを増やしたいということです。
GridFieldManager
このために、このマネージャーを使用してリストを作成し、データを入力しました。onFocus()
次に、このマネージャーのメソッドをオーバーライドします。ただし、このメソッドが呼び出されることはありません。その結果、選択した行アイテムの高さを増やすことができません。
助けてください。
ListField
アプリにを使用して、データをリストに表示しています。今、私の要件は、リストの選択されたアイテムの行の高さを増やしたいということです。
GridFieldManager
このために、このマネージャーを使用してリストを作成し、データを入力しました。onFocus()
次に、このマネージャーのメソッドをオーバーライドします。ただし、このメソッドが呼び出されることはありません。その結果、選択した行アイテムの高さを増やすことができません。
助けてください。
ListField
行はすべて均一なサイズになるように設計されているため、残念ながら、1つの行のサイズを直接変更することはできません。上と下の行がそれぞれ下と上にフォーカスカラーを少し描画するように設定することで、エミュレートすることができます。または、フォーカスされている行の真上に1つのフィールドを配置することもできます。次に、選択した行の情報を使用して、この「フローティングフィールド」を再描画します。
私はそれを動かしました。私は実装を偽造しましたListField
。削除ListField
して、に置き換えましたVerticalFieldManager
。onfocus()
との間にサイズを調整し、このマネージャーの高さを変更するためにonUnfocus()
使用しました。sublayout()
それは私が望むように正確に機能します。
you can increase the row height/font text/...
as ultimately, all of the api's call canvas's paint methods
how to do:
//try playing with the font_type,font height
Font myFont = Font.getDefault().derive(Font.PLAIN, 14, Ui.UNITS_px);
private class ListCallback implements ListFieldCallback {
public void drawListRow(ListField list, Graphics g, int index, int y, int w) {
g.setFont(myFont);
String text = (String)listElements.elementAt(index);
g.drawText(text, 0, y, 0, w);
//you can increase the height of a particular row in the height parameter.
// if you want it to be specific, put an 'if conditon'
EX: if(index=1)
{
w+=10;
}
}
}