2010-04-15 6 views

Répondre

0

Je ne crois pas que vous pouvez définir une image à ButtonField. Au lieu de cela, vous pouvez étendre la classe BitmapField, remplacer la fonction trackwheelClick et utiliser le onFocus pour déterminer si ce champ a été cliqué. Cela donnera une image qui est "cliquable".

8

Autre moyen est d'étendre ButtonField et dessiner l'image sur la peinture:

class BitmapButtonField extends ButtonField { 
    Bitmap mNormal; 
    Bitmap mFocused; 
    Bitmap mActive; 

    int mWidth; 
    int mHeight; 

    public BitmapButtonField(Bitmap normal, Bitmap focused, 
     Bitmap active) { 
     super(CONSUME_CLICK); 
     mNormal = normal; 
     mFocused = focused; 
     mActive = active; 
     mWidth = mNormal.getWidth(); 
     mHeight = mNormal.getHeight(); 
     setMargin(0, 0, 0, 0); 
     setPadding(0, 0, 0, 0); 
     setBorder(BorderFactory 
         .createSimpleBorder(new XYEdges(0, 0, 0, 0))); 
     setBorder(VISUAL_STATE_ACTIVE, BorderFactory 
         .createSimpleBorder(new XYEdges(0, 0, 0, 0))); 
    } 

    protected void paint(Graphics graphics) { 
     Bitmap bitmap = null; 
     switch (getVisualState()) { 
     case VISUAL_STATE_NORMAL: 
       bitmap = mNormal; 
       break; 
     case VISUAL_STATE_FOCUS: 
       bitmap = mFocused; 
       break; 
     case VISUAL_STATE_ACTIVE: 
       bitmap = mActive; 
       break; 
     default: 
       bitmap = mNormal; 
     } 
     graphics.drawBitmap(0, 0, bitmap.getWidth(), bitmap.getHeight(), 
         bitmap, 0, 0); 
    } 

    public int getPreferredWidth() { 
     return mWidth; 
    } 

    public int getPreferredHeight() { 
     return mHeight; 
    } 

    protected void layout(int width, int height) { 
     setExtent(mWidth, mHeight); 
    } 
} 

sample of use

+0

Excellent, merci Max! – DecodeGnome

Questions connexes