And*_*mes 8 android background button toggle drawable
我正在尝试切换按钮的背景drawable,以便当用户单击按钮时,其背景会发生变化,当用户再次单击该按钮时,其背景将返回默认值.这是我的代码:
public void Favorites(View V) {
Button star = (Button) findViewById(R.id.buttonStar);
if(star.getBackground().equals(R.drawable.btn_star_off)) {
star.setBackgroundResource(R.drawable.btn_star_on);
} else {
star.setBackgroundResource(R.drawable.btn_star_off);
}
}
Run Code Online (Sandbox Code Playgroud)
我很确定这不是你如何使用drawables与if语句.有人可以建议一种方法吗?
li2*_*li2 16
private boolean isButtonClicked = false; // You should add a boolean flag to record the button on/off state
protected void onCreate(Bundle savedInstanceState) {
......
Button star = (Button) findViewById(R.id.buttonStar);
star.setOnClickListener(new OnClickListener() { // Then you should add add click listener for your button.
@Override
public void onClick(View v) {
if (v.getId() == R.id.buttonStar) {
isButtonClicked = !isButtonClicked; // toggle the boolean flag
v.setBackgroundResource(isButtonClicked ? R.drawable.btn_star_on : R.drawable.btn_star_off);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
您可以在drawable文件夹中创建一个xml.这个xml(你选择名字......让我们称之为"bg_button_star.xml")可能看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/btn_star_on" />
<item android:drawable="@drawable/btn_star_off" />
Run Code Online (Sandbox Code Playgroud)
然后,您必须将此可绘制文件分配给布局文件中的Button背景属性.
android:background="@drawable/bg_button_star"
Run Code Online (Sandbox Code Playgroud)
如果您想以编程方式执行此操作,那么您只需执行以下操作:
button.setBackgroundResource(R.drawable.bg_button_star);
Run Code Online (Sandbox Code Playgroud)
当用户第一次单击该按钮时,将Selected状态设置为"true".背景会相应变化.(反之为'假'选定状态).
| 归档时间: |
|
| 查看次数: |
31636 次 |
| 最近记录: |