трекролл не работает, как я хочу или ожидаю, ежевика - PullRequest
1 голос
/ 30 апреля 2010

я работаю над ежевикой 8300

Я добавил некоторые компоненты на главном экране, теперь я хочу переместить фокус по вертикали, когда трекбол перемещается вверх или вниз, и переместить фокус по горизонтали, когда трек-колесо перемещается влево или вправо.

=============================================== ===================================

--Title area that contains a focusable field(BACK)--
--Non focusable Label field that indicates the name of the user--
--A horizontal field manager1 that contains 4 buttons--
--A horizontal field manager2 that contains 4 buttons--
--A horizontal field manager2 that contains 4 buttons--

=============================================== ===================================

теперь предположим, что в данный момент фокус находится на кнопке BACK, а затем я прокручиваю колесико вниз, фокус должен прийти на 1-й кнопке менеджера1 Опять же, когда я прокручиваю вниз, фокус должен быть на 1-й кнопке manager2, а не на 2-й кнопке manager1 (как это происходит на устройстве)

мой код :::

protected boolean trackwheelRoll(int amount, int status, int time) 
{
 focusIndex = this.getFieldWithFocusIndex();
 System.out.println("focus index ::::::::::::::::"+focusIndex);
 Field f;
 if(focusIndex!=0)
 {
   if(amount==-1)
   {
    //move up
       if(focusIndex>=0)
       {
        focusIndex = focusIndex-1;
         f = getField(focusIndex);
         f.setFocus();      
       }
   }
   if(amount==1)
   {
    //moving down
        if(focusIndex<=3)
        {
           f = getField(++focusIndex);
           f.setFocus();
        }
   }
     }
 return super.trackwheelRoll(amount, status, time);
}

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

Ответы [ 2 ]

2 голосов
/ 30 апреля 2010

Попробуйте переопределить метод [navigationMovement] [1] вместо trackwheelRoll - у вас будет доступ к параметрам «dx» и «dy», чтобы вы могли определить, будут ли они перемещаться вверх / вниз или из стороны в сторону. Теперь метод trackwheelRoll несколько архаичен, поскольку больше нет устройств trackwheel.

[1]: http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/ui/Manager.html#navigationMovement(int, int, int, int)

1 голос
/ 01 мая 2010
protected boolean navigationMovement(int dx, int dy, int status, int time) 
 {
    Field f;
    int index;
    focusIndex = this.getFieldWithFocusIndex();
    if(focusIndex==1)
    {
        f = getField(focusIndex);

        Manager m = (Manager)f;
        index = m.getFieldWithFocusIndex();
        if(dx==-1)
        {
            index = index--;
            if(index>=0)
              {
                f = m.getField(index);
                f.setFocus();
              }
        }
        if(dy==-1)
        {
            index = index-3;
            if(index>=0)
              {
                f = m.getField(index);
                f.setFocus();
              } 
        }
        if(dx==1)
        {
            index = index++;
            if(index<=19)
              {
                f = m.getField(index);
                f.setFocus();
              } 
        }
        if(dy==1)
        {
            index = index+3;
            if(index<=19)
              {
                f = m.getField(index);
                f.setFocus();
              } 
        }
    }
    return super.navigationMovement(dx, dy, status, time);
}
...