Blackberry Jumpy Scroll - PullRequest
       18

Blackberry Jumpy Scroll

4 голосов
/ 14 декабря 2011

У меня проблемы с вертикальной прокруткой в ​​приложении Blackberry.он отлично работает на сенсорных экранах, но при прокрутке с помощью трекпада он переходит от верхнего положения к нижнему.

У кого-нибудь была похожая проблема?Любая идея, что я мог бы попробовать?

Вот фрагмент из моего кода.У меня есть статическое фоновое изображение и прокрутка полей поверх него:

vertical_main = new VerticalFieldManager(USE_ALL_WIDTH |NO_VERTICAL_SCROLL |USE_ALL_HEIGHT);
vertical_AllTags=new VerticalFieldManager(USE_ALL_WIDTH | VERTICAL_SCROLL);
// i then add all the fields to vertical_AllTags
vertical_main.add(vertical_AllTags);
vertical_main.invalidate();
add(vertical_main);

заранее благодарю за вашу помощь

РЕДАКТИРОВАТЬ: предложение о выделении каждого поля фокусировки было правильным.единственная другая часть, которая должна быть выполнена, это когда вы переопределяете метод onFocus для поля, вам нужно вызвать функцию super (), чтобы все остальные нормальные части метода onFocus все еще вызывались:

protected void onFocus(int direction) {
    text_select=true;
    invalidate();
    super.onFocus(direction);
}

protected void onUnfocus() {
    text_select=false;
    invalidate();
    super.onUnfocus();
}

Большое вам спасибо.

Ответы [ 3 ]

1 голос
/ 14 декабря 2011

Это распространенная проблема в устройствах без касания для начинающих. если вы хотите прокрутить поле за полем, есть два способа

1) вам нужно сфокусироваться на всех полях, тогда фокусировка поля вниз

другой способ означает, что вам не нужно фокусироваться на каждом поле

2) просто добавьте NullField после каждого поля и выделите все NullFields, тогда ваш трекбол перенесет ваше поле на поле

1 голос
/ 14 декабря 2011

Это происходит потому, что при прокрутке TrackWheel он прокручивается до следующего поля Focused . Я думаю, вы не уделяете никакого внимания между vertical_AllTags .

Вы можете решить эту проблему с помощью класса NullField () . Как ...

add(new NullField(Field.FOCUSABLE))

при добавлении add (новый NullField (Field.FOCUSABLE)); вы получите нулевой фокус, который вы не знаете. И вы можете перемещаться по всем полям, как сенсорный экран.

0 голосов
/ 14 декабря 2011

Вы можете решить эту проблему, добавив два вертикальных менеджера поля .. взгляните на код в этой записи

...