2011-05-10 2 views
1

J'implémente un ImageButton personnalisé pour les périphériques tactiles (9500,9550,9800, ...) J'ai un problème pour ce que le champ externe de clic (toucher) génère l'événement dans le champ focalisé (lors de l'extension Field , BitmapField)BlackBerry click outside Champ

Je peux le résoudre en déplaçant le focus sur un champ vide, mais ce n'est pas très agréable. Chose étrange est que ce comportement est pour Field, BitmapField mais pas pour ButtonField. Il semble vraiment que quand ButtonField est concentré, les clics extérieurs ne génèrent pas d'événement de bouton.

J'ai essayé d'étendre ButtonField, mais je ne pouvais pas me débarrasser de ce fond de bouton stupide.

Donc, ma question; Quelle est cette différence de comportement entre Field et ButtonField qui provoque la génération d'événements en dehors de Field?

c'est ainsi que je l'ai enlevé fond bouton:

// cahange button border 
    setBorder(BorderFactory 
      .createSimpleBorder(new XYEdges(0, 0, 0, 0))); 
    setBorder(VISUAL_STATE_ACTIVE, BorderFactory 
      .createSimpleBorder(new XYEdges(0, 0, 0, 0))); 

Répondre

0

Vous avez juste besoin d'ajouter un chèque dans votre TouchEvent() pour le ImageButton

protected boolean touchEvent(TouchEvent message) { 
    //make sure the touch is withing the bounds of our Field 
    if(message.getX(1) < 0 || message.getX(1) > getWidth() || message.getY(1) < 0 || message.getY(1) > getHeight()) { 
     return false; 
    } 

    //Do your work 
} 

L'événement touche est envoyé sur le terrain ciblé même si ce n'est pas réellement sur le terrain, vous devez retourner false pour que le gestionnaire conteneur sache l'envoyer au champ suivant qui l'acceptera (le champ où le contact est activé, ou rien si c'est sur un espace vide) .

Edit: Pour supprimer l'arrière-plan du bouton, passer outre protected void applyTheme() {}

+0

oui je sais à propos de cette vérification, mais ma question est quelle est la différence, et pourquoi ButtonField accepte seulement à l'intérieur de clics? BTW en attendant, j'ai compris comment se débarrasser de l'arrière-plan des boutons, alors maintenant Buttonfield fonctionne parfaitement pour moi – Janci

+0

@Janci pouvez-vous s'il vous plaît partager comment avez-vous monter des arrière-plans de bouton? –

+0

@TechnodHr J'ai mis à jour ma réponse pour montrer comment enlever la décoration des boutons – jprofitt