Я пытаюсь создать приложение. Когда пользователь нажимает кнопку, он нажимается (изображение загружается). Когда он нажимает кнопку сейчас, он становится не нажатым (изображение загружается) и так далее. Я использую следующий код, с которым проблема заключается в том, что, когда я нажимаю на нажатую кнопку 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);
}
});
}
});
Вы можете сделать это так:
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.
Ого... это довольно ненужно...
Посмотрите на страницу документации ImageButton вверху о том, как использовать селектор для определения другого изображения для разных состояний.
http://developer.android.com/reference/android/widget/ImageButton.html
Затем в вашем макете xml вы должны использовать
android:background="@drawable/selectorfilename.xml"
или что-то подобное.
кулак, вы должны поддразнивать, чтобы эта кнопка была направлена или нет. если эта кнопка нажата, то вы делаете эти события, а если нет, то еще часть. поэтому для этого ур кода что-то вроде этого: -
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; } });
Используйте методы setTag()
и getTag()
, чтобы получить тег кнопки. В зависимости от тега установите фон кнопки. в xml также используйте android:tag
<Button
android:id="@+id/openpdfbutton"
android:layout_width="100dip"
android:layout_height="60dip"
android:text="Click"
android:background="@drawable/cancelfocus"
android:tag="@drawable/cancelfocus"
/>
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);
}
}
});
Спасибо Дипак