Вопрос по кнопке Android - PullRequest
1 голос
/ 30 мая 2011

Я пытаюсь создать приложение.Когда пользователь нажимает на кнопку, она нажимается (изображение загружается).Теперь, когда он нажимает кнопку, она не нажимается (изображение загружается) и так далее.Я использую приведенный ниже код, с которым проблема заключается в том, что когда я нажимаю на не нажатую кнопку в 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);
                    }
                });

            }
        });

Ответы [ 4 ]

2 голосов
/ 30 мая 2011

Вы могли бы сделать это так:

    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;
        }
    });

И иметь логическую переменную, установленную в качестве переменной-члена.

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

1 голос
/ 30 мая 2011

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

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

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

Тогда в xml вашего макета вы будете использовать

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

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

0 голосов
/ 31 мая 2011

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

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

0 голосов
/ 30 мая 2011

Используйте методы 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 Listener

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);
    }

        }
    });

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

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