BlackBerry - Пользовательский центрированный циклический - PullRequest
1 голос
/ 31 марта 2010

Попытка создать собственный циклический горизонтальный менеджер, который будет работать следующим образом. Он будет управлять несколькими полевыми кнопками, где кнопки всегда будут располагаться так, чтобы сфокусированная кнопка находилась посередине экрана. Поскольку это циклический менеджер, когда фокус перемещается на правую или левую кнопку, он перемещается в центр экрана, и все кнопки перемещаются соответственно (и последняя кнопка станет первой, чтобы дать ей циклический и бесконечный список чувство)

Есть идеи, как решить эту проблему?

Я попытался сделать это, внедрив собственный менеджер, который выравнивает кнопки в соответствии с требуемой раскладкой. Каждый раз, когда вызывается moveFocus (), я удаляю все поля (deleteAll ()) и добавляю их снова в правильном порядке. К сожалению, это не работает.

1 Ответ

0 голосов
/ 01 апреля 2010

Использование класса 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));
    }
}
...