2010-02-23 12 views
3

J'utilise un champ bitmap qui contient une petite image.comment mettre au point sur Bitmap Field, la couleur bleue n'est pas visible, blackberry

lorsque le focus est sur cette image, puis la couleur bleue de la mise au point ne semble, comment définir la largeur de mise au point et la hauteur

mon code ::

contract_image_field = new BitmapField(contract_image,Field.FOCUSABLE) 
{ 
     public void getFocusRect(XYRect rect) 
     { 
     rect.width=0; 
     rect.height=0; 
     //super.getFocusRect(rect); 
     } 
     protected void onFocus(int direction) 
     { 
     myScreen.this.invalidate(); 
     super.onFocus(direction); 
    } 
     protected void onUnfocus() 
     { 
     myScreen.this.invalidate(); 
     super.onUnfocus(); 
    } 
     }; 
     contract_image_field.setBitmap(contract_image); 

c'est la manière dont i travailler avec le champ d'image,

bien que mon image est cliquable, mais je ne peux pas voir que la couleur bleu (je veux que s'il vous plaît aider !!!)

l'évolution des valeurs de largeur et la hauteur dans getFocusRect ne résout même pas le problème

Répondre

3

réellement le focus est là mais vous ne pouvez pas voir parce que la région de foyer est la même que l'étendue entière du champ. si vous voulez voir le focus rect augmenter l'étendue du champ.

BitmapField bitmapField = new BitmapField(bitmap,Field.FOCUSABLE){ 
      protected void layout(int width, int height) { 
       setExtent(bitmap.getWidth()+10, bitmap.getHeight()+10); 
      } 

     }; 
+0

Merci beaucoup Vivart pour la résolution de mon problème – Swati

+0

Cela mettra seulement la zone de mise au point bleu dans le côté droit et le côté inférieur de l'image bitmap, mais pas sur le côté gauche et le dessus. Donc, je pense qu'une meilleure solution est d'utiliser setSpace dans la méthode drawFocus, je posterai le code pour cela. –

4

Vous pouvez également éviter d'augmenter l'étendue du champ; en utilisant le code suivant:

BitmapField bitmapField = new BitmapField(bitmap, BitmapField.FOCUSABLE) 
{ 
    protected void drawFocus(Graphics graphics, boolean on) 
    { 
      setSpace(5, 5); 
      super.drawFocus(graphics, on); 
    }  
}; 
+0

oh c'est bon ashraf merci !!!!!!!! – Swati

0

suggestion d'Achraf est correct, que je voudrais essayer d'éviter la mise en « espace » à chaque appel drawFocus.

suffit d'appeler setSpace(int, int) membre une fois sur le champ bitmap en question.