Вопрос по кнопке Android

1

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

 NameButton = (Button)findViewById(R.id.Button01);
        NameButton.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {
                NameButton.setBackgroundResource(R.drawable.pressed);
                NameButton.setOnClickListener(new View.OnClickListener() 
                {
                    public void onClick(View v) 
                    {
                        NameButton.setBackgroundResource(R.drawable.unpressed);
                    }
                });

            }
        });
Теги:
button

4 ответа

2
Лучший ответ

Вы можете сделать это так:

    NameButton = (Button)findViewById(R.id.Button01);
    NameButton.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) 
        {
            if (setPressed)
                NameButton.setBackgroundResource(R.drawable.pressed);
            else
                NameButton.setBackgroundResource(R.drawable.unpressed);
            setPressed = !setPressed;
        }
    });

И имеет значение boolean variablePressed как переменная-член.

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

  • 0
    Это было просто! Спасибо!
1

Ого... это довольно ненужно...

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

http://developer.android.com/reference/android/widget/ImageButton.html

Затем в вашем макете xml вы должны использовать

android:background="@drawable/selectorfilename.xml"

или что-то подобное.

0

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

NameButton = (кнопка) findViewById (R.id.Button01);   NameButton.setOnClickListener(новый View.OnClickListener()   {       public void onClick (View v)       {           if (setPressed)               NameButton.setBackgroundResource(R.drawable.pressed);           еще               NameButton.setBackgroundResource(R.drawable.unpressed);           setPressed =! setPressed;       }   });

0

Используйте методы setTag() и getTag(), чтобы получить тег кнопки. В зависимости от тега установите фон кнопки. в xml также используйте android:tag

в XML

<Button 
    android:id="@+id/openpdfbutton"
   android:layout_width="100dip"
  android:layout_height="60dip"
  android:text="Click"
  android:background="@drawable/cancelfocus"
  android:tag="@drawable/cancelfocus"
  />

в приемнике OnClick

NameButton = (Button)findViewById(R.id.Button01);
        NameButton.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {

if(NameButton.getTag().equals(R.drawable.cancelfocus)){

    NameButton.setBackgroundResource(R.drawable.cancel_unfocus);
    NameButton.setTag(R.drawable.cancel_unfocus);
    }else{
        System.out.println("...UnFocus Button clicked...");
        NameButton.setBackgroundResource(R.drawable.cancelfocus);
        NameButton.setTag(R.drawable.cancelfocus);
    }

        }
    });

Спасибо Дипак

Ещё вопросы

Сообщество Overcoder
Наверх
Меню