2010-03-31 5 views
1

Vous essayez de créer un gestionnaire horizontal cyclique personnalisé qui fonctionnera comme suit. Il contrôlera plusieurs boutons de champ où les boutons seront toujours positionnés de sorte que le bouton focalisé sera au milieu de l'écran. Comme c'est un gestionnaire cyclique une fois que le focus se déplace vers le bouton droit ou gauche, il se déplace au centre de l'écran et tous les boutons bougent en conséquence (et le dernier bouton devient le premier à lui donner une liste cyclique et infinie sentiment)BlackBerry - Horizontal cyclique centré HorizontalFieldManager

Une idée pour résoudre ce problème?

J'ai essayé de le faire en implémentant un gestionnaire personnalisé qui aligne les boutons en fonction de la disposition requise. Chaque fois que moveFocus() est appelé, je supprime tous les champs (deleteAll()) et les rajoute dans le bon ordre. Malheureusement, cela ne fonctionne pas.

Répondre

0

utilisant la classe HorizontalButtonFieldSet de KB How to - Implement advanced buttons, fields, and managers:

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)); 
    } 
}