3

J'essaie de créer un écran de discussion. Dans cet écran, pour l'arrière-plan de texte, j'utilise l'image et redimensionne cette image de fond en fonction du nombre de caractères dans le texte du message.Problème d'étirement d'image dans blackberry

Problème: lorsque les caractères sont moins petits, l'image est affichée mais lorsque les caractères augmentent en nombre, cette image s'étend inutilement sur l'écran. En outre, si le premier message est long, l'image sera étirée mais lorsque nous envoyons le message suivant de moindre caractère, toutes les images d'arrière-plan se rétrécissent en fonction de la taille du dernier message. Il est montré dans les deux premiers messages dans la capture d'écran.

Dans une ligne, nous pouvons dire, l'image s'étend ou rétrécit en fonction de la taille du dernier message sur l'écran.

enter image description here

code

pour fond blanc est ici:

public void sendMessage(String msg) { 
    HorizontalFieldManager chatHFM = new HorizontalFieldManager(); 

    offsets_me[2] = offsets_me[1] + msg.length(); 

    BitmapField bitmapField = new BitmapField(_myPic); 
    bitmapField.setBorder(roundedBorder1); 

    imageVFM = new VerticalFieldManager(); 
    imageVFM.setMargin(0,0,0,0); 
    imageVFM.add(bitmapField); 

    _text_Length = msg.length()+ 6; 

    if(_text_Length<=60){ 
     if(Constants.displayWidth<=360){ 
      _bgImage_White = Constants.sizePic(EncodedImage.getEncodedImageResource("white_l.png"), 70, 200); 
     }else if(Constants.displayWidth>360 && Constants.displayWidth<640){ 
      _bgImage_White = Constants.sizePic(EncodedImage.getEncodedImageResource("white_l.png"), 90, 330); 
     }else if(Constants.displayWidth>=640){ 
      _bgImage_White = Constants.sizePic(EncodedImage.getEncodedImageResource("white_l.png"), 100, 500); 
     } 
    }else if(_text_Length>60 && _text_Length <=120){ 
     if(Constants.displayWidth<=360){ 
      _bgImage_White = Constants.sizePic(EncodedImage.getEncodedImageResource("white_l.png"), 140, 200); 
     }else if(Constants.displayWidth>360 && Constants.displayWidth<640){ 
      _bgImage_White = Constants.sizePic(EncodedImage.getEncodedImageResource("white_l.png"), 170, 330); 
     }else if(Constants.displayWidth>=640){ 
      _bgImage_White = Constants.sizePic(EncodedImage.getEncodedImageResource("white_l.png"), 200, 500); 
     } 
    }else if(_text_Length>120 && _text_Length<200){ 
     if(Constants.displayWidth<=360){ 
      _bgImage_White = Constants.sizePic(EncodedImage.getEncodedImageResource("white_l.png"), 200, 200); 
     }else if(Constants.displayWidth>360 && Constants.displayWidth<640){ 
      _bgImage_White = Constants.sizePic(EncodedImage.getEncodedImageResource("white_l.png"), 240, 330); 
     }else if(Constants.displayWidth>=640){ 
      _bgImage_White = Constants.sizePic(EncodedImage.getEncodedImageResource("white_l.png"), 270, 500); 
     } 
    } 

    textVFM = new VerticalFieldManager(){ 
     protected void paint(Graphics graphics) { 
      graphics.drawBitmap(0,0 , _bgImage_White.getWidth() , getHeight(), _bgImage_White, 0, 0); 
      super.paint(graphics); 
     } 
    }; 

    EditField richTextField = new EditField("" ,"" ,140, 0L){ 
     protected void paint(Graphics graphics) { 
      graphics.setColor(Color.RED); 
      super.paint(graphics); 
     } 
     public void layout (int width, int height) { 
      super.layout (width, height); 
      if (getExtent().height < _bgImage_White.getHeight()){ 
       setExtent (width, _bgImage_White.getHeight()); 
      }else{setExtent (width, _bgImage_White.getHeight());} 

     } 
    }; 
    // richTextField.setBorder(roundedBorder1); 
    richTextField.setText("Me : "+msg); 
    richTextField.setEditable(false); 
    richTextField.setMargin(10,10,10,10); 
    textVFM.add(richTextField); 
    textVFM.setMargin(0,75,0,0); 
    chatHFM.add(imageVFM); 
    chatHFM.add(textVFM); 
    chatHFM.setMargin(8,0,8,0); 
    this.add(chatHFM); 
    this.add(new NullField(NullField.FOCUSABLE));  
} 

Répondre

2

Télécharger le Code Advance UI à partir du lien ci-dessous:

Advance UI

Exécutez et vérifiez la classe UIExampleNegativeMarginScreen.

Je pense que cela va vous aider.

Implementation of Advance UI components

+1

+1. Il y a une explication au bas de [ce tutoriel] (http://developer.blackberry.com/java/documentation/advanced_ui_components_and_managers_1970227_11.html) –