Нажатие кнопки, чтобы изменить фоновое изображение нажатой кнопки - PullRequest
0 голосов
/ 24 октября 2011

Я пытаюсь изменить фоновое изображение кнопки, на которую нажимают. Кнопка, изображение которой я пытаюсь переключить, - это та же кнопка, на которую нажали. В конечном итоге я хочу, чтобы программа проверила текущее фоновое изображение и изменила его на другое изображение, учитывая результат теста.

final Button testButton = (Button) findViewById(R.id.buttonTestButton);
testButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        //toggle picture
        if (testButton.equals(getResources().getDrawable(R.drawable.fakepicture))) {
            testButton.setBackgroundResource(R.drawable.alternatepicture);
        }   

        else {  
            testButton.setBackgroundResource(R.drawable.fakpicture);
        }
    }//end void onClick

});//end test button on click listener

Ответы [ 5 ]

1 голос
/ 24 октября 2011

, как ответили другие друзья, предпочтительно использовать ToggleButton в Android,

и в вашем случае, если вы хотите сохранить свой код, ваш метод должен быть таким:

final Button testButton = (Button) findViewById(R.id.buttonTestButton);
int status = 0;//GLOBAL VARIABLE : the status of the Button ( 0 or 1 ) 
testButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        //toggle picture
        if (status == 0) {
            testButton.setBackgroundResource(R.drawable.alternatepicture);
            status=1 ; // change the status to 1 so the at the second clic , the else will be executed
        }   

        else {  
            testButton.setBackgroundResource(R.drawable.fakpicture);
            status =0;//change the status to 0 so the at the second clic , the if will be executed
        }
    }//end void onClick

});//end test button on click listener
1 голос
/ 24 октября 2011

1001 * попробовать *

testButton.getBackground().equals(getResources().getDrawable(R.drawable.fakepicture));

Однако ToggleButton может подойти вам лучше.

1 голос
/ 24 октября 2011

Как уже говорили другие, ваш метод equals сравнивает саму кнопку с изображением, но вам нужно сравнить фоновые рисунки.

Я рекомендую загрузить изображения, которые вы хотите использовать, и затем использовать их ссылкипозже, чтобы сделать вещи более понятными, что-то вроде этого:

    final Drawable first = getResources().getDrawable(
            android.R.drawable.arrow_up_float);
    final Drawable second = getResources().getDrawable(
            android.R.drawable.arrow_down_float);

    final Button testButton = (Button) findViewById(R.id.toggleButton);
    testButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            if (testButton.getBackground().equals(first)) {
                testButton.setBackgroundDrawable(second);
            } else {
                testButton.setBackgroundDrawable(first);
            }
        }
    });
0 голосов
/ 11 февраля 2013

Вы можете использовать кнопки или кнопки изображения ..

private ImageButton mod1,mod2;

mod1        = (ImageButton) findViewById(R.id.mod1);
mod2        = (ImageButton) findViewById(R.id.mod2);
mod1.setOnClickListener(this);
mod2.setOnClickListener(this);



public void onClick(View v) {

    mod1.getDrawable().clearColorFilter();
    mod2.getDrawable().clearColorFilter();

    switch (v.getId()) {
        case R.id.mod1:
            mod1.getDrawable().setColorFilter(0xfff47521,PorterDuff.Mode.SRC_ATOP);
            break;
        case R.id.mod2:
            mod2.getDrawable().setColorFilter(0xfff47521,PorterDuff.Mode.SRC_ATOP);
            break;
    }
}
0 голосов
/ 24 октября 2011

Вы можете просто использовать ToggleButton: Android ToggleButton и использовать StateList для изменения фона: StateList с использованием атрибута проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...