О CustomButtonField в ежевике - PullRequest
0 голосов
/ 29 июня 2011

Предположим, у меня есть custombuttonField, который содержит 2 растровых изображения, скажем, 2 стрелки (одна слева и другая справа), и когда пользователь нажимает эту кнопку, цвет стрелки в моем приложении становится красным. Я делаю это, нажимая тот же экран на клик evevt. Я использую переменную int pic_status , которая определяет, какое изображение должно быть загружено в поле custombuton при вызове pushScreen () . Есть ли способ обновить customButtonField (обновить растровое изображение) с того же экрана без вызова pushScreen ().

    public void fieldChanged(Field field, int context) 
{
    if(field == bf1)
    {

      if(pic_status == 0)
       {
           b =1;


       }
      UiApplication.getUiApplication().pushScreen(new Screen2(b));    


  }

В моем коде выше вы видели, что я нажимаю на тот же экран, если пользователь нажимает кнопка. Пожалуйста, дайте код для обновления, не вызывая pushScreen ().

1 Ответ

1 голос
/ 29 июня 2011

Ниже приведен код для customButtonField, в котором есть два изображения. Один для фокусного изображения, а другой для обычного изображения.

, чтобы обновить изображение кнопки, вам просто нужно вызвать метод setBitmap для обычного изображения. Вы можете изменить ниже код в соответствии с вами. Вам нужно вызвать метод invalidate () после вызова метода setBitmap.

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.component.LabelField;

class BitmapButtonField extends BitmapField 
{
    Bitmap mNormal;
    Bitmap mFocused;
    String text;
    int mWidth;
    int mHeight;
    public Bitmap bitmap = null;

    public BitmapButtonField(String text,Bitmap normal, Bitmap focused)
    {
        super(normal,FOCUSABLE);
        mNormal = normal;
        mFocused = focused;
        mWidth = mNormal.getWidth();
        mHeight = mNormal.getHeight();
        this.text=text;
        setMargin(0, 0, 0, 0);
        setPadding(0, 0, 0, 0);
    }
    public void setBitmap(Bitmap bitmap)
    {
        mNormal=bitmap;

        this.bitmap=bitmap;
    }
    public void setfocusBitmap(Bitmap bitmap)
    {
        mFocused=bitmap;
    }
    public String getText()
    {
        return text;
    }
    public void setText(String text)
    {
        this.text=text;
    }
    protected void paint(Graphics graphics) {
        Bitmap bitmap = mNormal;
        if(isFocus())
        {
             bitmap = mFocused;
        }
        else
        {
            bitmap = mNormal;
        }

        graphics.drawBitmap(0, 0, bitmap.getWidth(), bitmap.getHeight(),
                        bitmap, 0, 0);
        LabelField l=new LabelField(text);

        graphics.drawText(text,  bitmap.getWidth()/2-l.getPreferredWidth()/2+3,  bitmap.getHeight()/2-l.getPreferredHeight()/2);    
    }
    protected void drawFocus(Graphics graphics, boolean on) {
    }
    protected void onFocus(int direction) {
        invalidate();
        super.onFocus(direction);
    }
    protected void onUnfocus() {
        invalidate();
        super.onUnfocus();
    }
    public int getPreferredWidth() {
        return mWidth;
    }

    public int getPreferredHeight() {
        return mHeight;
    }

    protected void layout(int width, int height) {
        setExtent(mWidth, mHeight);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...