2010-04-15 3 views

ответ

0

Я не верю, что вы можете установить изображение на ButtonField. Вместо этого вы можете расширить класс BitmapField, переопределить функцию trackwheelClick и использовать onFocus, чтобы определить, было ли это поле нажатым. Это даст изображение, которое можно «щелкнуть».

8

Другой способ заключается в расширении ButtonField и нарисовать изображение на краске:

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

Отлично, спасибо Макс! – DecodeGnome

Смежные вопросы