2010-03-31 37 views
1

試圖創建一個定製的循環水平管理器,其工作方式如下。它將控制幾個按鈕總是被定位的區域按鈕,以便聚焦的按鈕將在屏幕中間。由於它是一個循環管理器,一旦焦點移動到右側或左側按鈕,它將移動到屏幕的中心,所有按鈕將相應移動(最後一個按鈕將成爲第一個給它一個循環和無盡的列表感覺)BlackBerry - 以自定義爲中心的循環Horizo​​ntalFieldManager

任何想法如何解決這個問題?

我試圖通過實現一個自定義管理器,根據所需的佈局對齊按鈕。每次moveFocus()被調用時,我都會刪除所有字段(deleteAll()),並以正確的順序再次添加它們。 不幸的是,這不起作用。

回答

0

從KB How to - Implement advanced buttons, fields, and managers使用Horizo​​ntalButtonFieldSet類:

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)); 
    } 
} 
相關問題