我无法将焦点放在拥有两个LabelFields的HorizontalFieldManager上。当HorizontalFieldManager获得焦点时,我想突出显示它。我正在使用以下代码,但它不起作用。
HorizontalFieldManager hrzMgrTimeLabel = new HorizontalFieldManager(
Manager.USE_ALL_HEIGHT|Manager.FOCUSABLE) {
protected void onFocus(int direction) {
focussed = true;
invalidate();
super.onFocus(direction);
}
protected void onUnfocus() {
focussed = false;
invalidate();
super.onUnfocus();
}
protected void paint(Graphics g) {
g.setBackgroundColor(0x646060);
if (focussed) {
g.setColor(Color.BLUE);
}
g.clear();
super.paint(g);
}
};
hrzMgrTimeLabel.add(a);
hrzMgrTimeLabel.add(b);
horizontalFieldManager_left15.add(hrzMgrTimeLabel);下面是LabelField的实现。
final LabelField a= new LabelField("") {
protected void paint(Graphics graphics) {
graphics.setColor(Color.WHITE);
graphics.setBackgroundColor(0x646060);
graphics.clear();
super.paint(graphics);
}
};
final LabelField b= new LabelField("") {
protected void paint(Graphics graphics) {
graphics.setColor(Color.WHITE);
graphics.setBackgroundColor(0x646060);
graphics.clear();
super.paint(graphics);
}
};发布于 2012-06-11 19:57:40
getFocusRect()函数可能会给出答案。它给出了在管理器中应用焦点的范围,然后可以使用Graphics.paint()方法或Border类。
发布于 2012-06-11 19:37:12
如果您想要聚焦您的标签字段,那么使用final LabelField a= new LabelField("".FOCUSABLE)。
发布于 2012-06-11 19:56:45
您需要在HorizontalFieldManager上至少有一个可聚焦字段。下面这行代码可以做到这一点。
hrzMgrTimeLabel.add(new NullField(NullField.FOCUSABLE));检查以下代码。
HorizontalFieldManager hrzMgrTimeLabel = new HorizontalFieldManager(Manager.USE_ALL_HEIGHT | Manager.FOCUSABLE) {
protected void paint(Graphics g) {
g.setBackgroundColor(isFocus() ? Color.BLUE : 0x646060);
g.clear();
super.paint(g);
}
protected void onFocus(int direction) {
invalidate();
super.onFocus(direction);
}
protected void onUnfocus() {
invalidate();
super.onUnfocus();
}
protected boolean navigationMovement(int dx, int dy, int status, int time) {
invalidate();
return super.navigationMovement(dx, dy, status, time);
}
protected boolean navigationClick(int status, int time) {
invalidate();
return super.navigationClick(status, time);
}
protected boolean navigationUnclick(int status, int time) {
invalidate();
return super.navigationUnclick(status, time);
}
};
final LabelField a = new LabelField("First Label Field") {
protected void paint(Graphics graphics) {
graphics.setColor(Color.WHITE);
super.paint(graphics);
}
};
final LabelField b = new LabelField("Second Label Field") {
protected void paint(Graphics graphics) {
graphics.setColor(Color.WHITE);
super.paint(graphics);
}
};
hrzMgrTimeLabel.add(new NullField(NullField.FOCUSABLE));
hrzMgrTimeLabel.add(a);
hrzMgrTimeLabel.add(b);便笺
onFocus(...)、onUnfocus()、navigationMovement(...)、navigationClick(...)、navigationUnclick(...) -这些方法只是为了刷新绘图而被覆盖。
https://stackoverflow.com/questions/10979027
复制相似问题