Как изменить цвет кнопки при ее нажатии - PullRequest
1 голос
/ 24 ноября 2011

У меня есть поле кнопки. его цвет красный. когда я нажимаю на его цвет, кнопка должна измениться на черный, как это сделать?

Ответы [ 5 ]

1 голос
/ 06 марта 2012

попробуй это работа

  public int checkBoxFlag1 = 0;
    public int checkBoxFlag2 = 0;
    public int checkBoxFlag3 = 0;

final Bitmap focuscheckButton = Bitmap.getBitmapResource("checkbox_tickmark.png");
        final Bitmap unfocuscheckButton = Bitmap.getBitmapResource("checkbox.png");

        HorizontalFieldManager checkBoxFieldManager = new HorizontalFieldManager(); 

        BitmapField checkBox1 = new BitmapField(unfocuscheckButton,Field.FOCUSABLE)
        {
            protected void paint(Graphics graphics) 
            {
                // TODO Auto-generated method stub
                if(checkBoxFlag1==0)
                {
                    this.setBitmap(unfocuscheckButton);
                }
                else
                {
                    this.setBitmap(focuscheckButton);
                }
                super.paint(graphics);
            }
            protected boolean navigationClick(int status, int time) 
            {
                // TODO Auto-generated method stub
                if(checkBoxFlag1==0)
                {
                    checkBoxFlag1=1;
                }
                else
                {
                    checkBoxFlag1=0;
                }
                return super.navigationClick(status, time);
            }

        };      
        checkBox1.setMargin(0,20,0,20);
        checkBoxFieldManager.add(checkBox1);
1 голос
/ 24 ноября 2011

Если ваша кнопка является тегом a class="button", вы можете сделать это следующим образом:

a.button {
    color: black;
}
1 голос
/ 24 ноября 2011

Вы можете попробовать с «Учебник: Создание пользовательской кнопки» официальных документов RIM.

Я думаю, это то, что вы ищете

1 голос
/ 24 ноября 2011

Пробовали ли вы этот урок " Поле пользовательских кнопок Blackberry ", или вы также можете создать поле растрового изображения с фоном, установленным в один цвет, и реализовать собственный метод рисования для необходимых изменений.

0 голосов
/ 28 ноября 2011

используйте это -

image1 - кнопка изображения красного цвета, а image2 - черная

reg_can_btn editprofile = new reg_can_btn("", Field.FOCUSABLE |FIELD_HCENTER,  image1, image2, 0x102839);

, затем

public class edit_profile_btn extends Field {

private String _label;
private int _labelHeight;
private int _labelWidth;
private Font _font;

private Bitmap _currentPicture;
private Bitmap _onPicture; 
private Bitmap _offPicture; 
int color;

public edit_profile_btn(String text, long style ,String img, String img_hvr, int color){
    super(style);


    _offPicture = Bitmap.getBitmapResource(img);
    _onPicture = Bitmap.getBitmapResource(img_hvr);

    _font = getFont();
    _label = text;
    _labelHeight = _onPicture.getHeight();  
    _labelWidth = _onPicture.getWidth();

    this.color = color;

    _currentPicture = _offPicture;
}

/**
 * @return The text on the button
 */
String getText(){
    return _label;
}

/**
 * Field implementation.
 * @see net.rim.device.api.ui.Field#getPreferredHeight()
 */
public int getPreferredHeight(){
    return _labelHeight;
}

/**
 * Field implementation.
 * @see net.rim.device.api.ui.Field#getPreferredWidth()
 */
public int getPreferredWidth(){
    return _labelWidth;
}

/**
 * Field implementation.  Changes the picture when focus is gained.
 * @see net.rim.device.api.ui.Field#onFocus(int)
 */
protected void onFocus(int direction) {
    _currentPicture = _onPicture;
    invalidate();
}

/**
 * Field implementation.  Changes picture back when focus is lost.
 * @see net.rim.device.api.ui.Field#onUnfocus()
 */
protected void onUnfocus() {
    _currentPicture = _offPicture;
    invalidate();
}

/**
 * Field implementation.  
 * @see net.rim.device.api.ui.Field#drawFocus(Graphics, boolean)
 */
protected void drawFocus(Graphics graphics, boolean on) {
    // Do nothing
}

/**
 * Field implementation.
 * @see net.rim.device.api.ui.Field#layout(int, int)
 */
protected void layout(int width, int height) {
    setExtent(Math.min( width, getPreferredWidth()), 
    Math.min( height, getPreferredHeight()));
}

/**
 * Field implementation.
 * @see net.rim.device.api.ui.Field#paint(Graphics)
 */
protected void paint(Graphics graphics){       
    // First draw the background colour and picture
    //graphics.setColor(this.color);
    graphics.setBackgroundColor(Color.BLACK);
    graphics.fillRect(0, 0, getWidth(), getHeight());
    graphics.drawBitmap(0, 0, getWidth(), getHeight(), _currentPicture, 0, 0);

    // Then draw the text
    graphics.setColor(Color.BLACK);
    graphics.setFont(_font);
    graphics.drawText(_label, 4, 2, 
        (int)( getStyle() & DrawStyle.ELLIPSIS | DrawStyle.HALIGN_MASK ),
        getWidth() - 6 );
}

/**
 * Overridden so that the Event Dispatch thread can catch this event
 * instead of having it be caught here..
 * @see net.rim.device.api.ui.Field#navigationClick(int, int)
 */
protected boolean navigationClick(int status, int time){
    fieldChangeNotify(1);
    return true;
}

}
...