尝试创建一个自定义循环水平管理器,其工作方式如下。它将控制多个字段按钮,其中按钮将始终定位,以便聚焦按钮位于屏幕中间。由于它是一个循环管理器,一旦焦点移动到右侧或左侧按钮,它将移动到屏幕的中心,所有按钮将相应移动(最后一个按钮将成为第一个给它一个循环和无尽的列表感觉)
知道如何解决这个问题吗?
我尝试通过实现自定义管理器来实现这一点,该管理器根据所需的布局对齐按钮。每次调用moveFocus()时,我都会删除所有字段(deleteAll())并按正确顺序重新添加它们。 不幸的是,这不起作用。
答案 0 :(得分:0)
使用KB How to - Implement advanced buttons, fields, and managers中的HorizontalButtonFieldSet类:
class CentricHManager extends HorizontalButtonFieldSet {
int focusedFieldIndex = 0;
public void focusChangeNotify(int arg0) {
super.focusChangeNotify(arg0);
int focusedFieldIndexNew = getFieldWithFocusIndex();
if (focusedFieldIndexNew != focusedFieldIndex) {
if (focusedFieldIndexNew - focusedFieldIndex > 0)
switchField(0, getFieldCount() - 1);
else
switchField(getFieldCount() - 1, 0);
}
}
private void switchField(int prevIndex, int newIndex) {
Field field = getField(prevIndex);
delete(field);
insert(field, newIndex);
}
public void add(Field field) {
super.add(field);
focusedFieldIndex = getFieldCount() / 2;
setFieldWithFocus(getField(focusedFieldIndex));
}
}