User interface 黑莓手机-线路不显示
我对EditField有问题。 我在HorizontalFieldManager下使用此代码创建了一个EditFieldUser interface 黑莓手机-线路不显示,user-interface,blackberry,blackberry-storm,blackberry-editfield,User Interface,Blackberry,Blackberry Storm,Blackberry Editfield,我对EditField有问题。 我在HorizontalFieldManager下使用此代码创建了一个EditField EditField nameEditLabel = new EditField (EditField.FOCUSABLE | EditField.NO_NEWLINE | EditField.FIELD_RIGHT); nameEditLabel.setMaxSize(25); nameEditLabel.setMargin(50, 0, 0, 80); horiz
EditField nameEditLabel = new EditField (EditField.FOCUSABLE
| EditField.NO_NEWLINE | EditField.FIELD_RIGHT);
nameEditLabel.setMaxSize(25);
nameEditLabel.setMargin(50, 0, 0, 80);
horizontalFldManager.add(nameEditLabel);
现在的问题是,在屏幕上,它不显示字段的行。类似于,基本上一个字段包含名称:-------------其他平台控件中的这一行,在屏幕上没有显示。这里有什么问题?它是API支持中的默认值吗?如果否,如何解决
注意:只有当我在字段中写入内容时,才会创建此行
谢谢。如果您想拥有此功能——如果EditField为空,请扩展它以实现校验值逻辑:
class LabelFieldEmpty extends EditField {
String mEmptyText = "";
public LabelFieldEmpty(long style) {
super(style);
}
public void setEmptyText(String emptyText) {
mEmptyText = emptyText;
}
public String getEmptyText() {
return mEmptyText;
}
protected boolean keyChar(char key, int status, int time) {
if (null != mEmptyText)
if (getText().equalsIgnoreCase(mEmptyText)) {
setText(String.valueOf(key));
return true;
}
return super.keyChar(key, status, time);
}
protected void fieldChangeNotify(int context) {
if (null != mEmptyText)
if (!getText().equalsIgnoreCase(mEmptyText))
if (getText().equalsIgnoreCase("")) {
setText(mEmptyText);
setCursorPosition(0);
}
super.fieldChangeNotify(context);
}
}
使用示例:
class Scr extends MainScreen {
public Scr() {
String label = "Name:";
String empty = "-------------------------";
int maxChars = 25;
long style = EditField.FOCUSABLE | EditField.NO_NEWLINE
| EditField.FIELD_RIGHT;
LabelFieldEmpty nameEdit = new LabelFieldEmpty(style);
nameEdit.setLabel(label);
nameEdit.setMaxSize(maxChars);
nameEdit.setMargin(50, 0, 0, 80);
nameEdit.setEmptyText(empty);
add(nameEdit);
}
}