如何自定义objectlistfield?
-
01-10-2019 - |
题
是否可以根据以下设计自定义ObjectFieldList?
----------------------------
ROW#1 ROW NAME
row details
---------------------------
ROW#2 ROW NAME
row details
---------------------------
ROW#3 ROW NAME
row details
---------------------------
行名的字体比行详细信息更大
基本上,我需要在一排Objectlistfield中进行2行。
解决方案
ObjectListField
确实不是正确的方法 - 它确实是设计为快速版本的 ListField
对于您只需要简单的字符串列表的时候。
你应该扩展 ListField
本身,并提供自己的实施 ListFieldCallback
这会根据您的数据模型呈现列表。采用 ListField.setCallback
设置您的回调。
ListFieldCallback.drawListRow
给你一个 Graphics
上下文,因此您可以绘制任何想要的内容,包括多行文本。还请确保致电 ListField.setRowHeight
在您的ListField上,将行足够高到足够高,以实现2行文本(默认高度是字体高度,因此您只有1行文本的空间)。
示例代码是类似的(这是不完整的,没有其他代码就不会编译):
ListField myListField = new ListField();
myListField.setRowHeight(getFont().getHeight() * 2)
myListField.setCallback(new ListFieldCallback() {
public void drawListRow(ListField listField, Graphics graphics, int index, int y, int width) {
// draw the first line of text
graphics.drawText(0, y, "ROW " + rowNumber);
graphics.drawText(20, y, "ROW NAME");
graphics.drawText(20, y + getFont().getHeight(), "row details");
}
不隶属于 StackOverflow