2010-03-31 64 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)); 
    } 
} 
相关问题