我想在单击时更改按钮的颜色。但是当我点击另一个第二个按钮时,第一个按钮必须用最后一个颜色着色。
我的意思是,当我单击哪个按钮时,它必须用蓝色着色,其他按钮必须是非彩色的。 这是代码;
if(view == button1)
{
button1.setBackgroundColor(Color.BLUE);
}
else if(view == button2){
button2.setBackgroundColor(Color.BLUE);
}
else if(view == button3){
button3.setBackgroundColor(Color.BLUE);
}
else if(view == button4){
button4.setBackgroundColor(Color.BLUE);
}
//init all buttons background : GRAY
public void initButtons(){
button1.setBackGroundColor(Color.GRAY);
button2.setBackGroundColor(Color.GRAY);
button3.setBackGroundColor(Color.GRAY);
button4.setBackGroundColor(Color.GRAY);
}
并在 OnClick 的实现中:这样做:
@Override
public void onClick(View v ) {
initButtons();
((Button)v).setBackGroundColor(Color.BLUE);
}
希望对:)有所帮助
您可以使用可绘制对象选择器在XML中定义按钮状态,那么默认情况下,单击的按钮仅在处于单击状态时才更改为所需的颜色。
在可绘制对象文件夹中创建一个新的 xml 文件,例如blue_btn.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/yourColor"
android:state_pressed="true" android:state_enabled="true" />
<item android:drawable="@color/yourOtherColor" android:state_enabled="true" />
</selector>
然后使用 R.drawable.blue_btn 作为按钮的背景
参考: http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
保留对以前修改的按钮的引用。 当您有新的单击时,将以前引用的按钮设置回无色,将当前按钮设置为蓝色,然后将该引用设置为当前按钮。
当您需要在按下按钮时更改按钮的背景颜色时,您必须遵循这些,
创建一个 XML 文件,如可绘制对象中的layout_a.xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/btn_pressed" /> <!--btn pressed -->
<item android:drawable="@drawable/btn_normal" /> <!-- Normal condition -->
</selector>
现在这个文件应该在一个可绘制的文件夹中,并在按钮代码中使用这个单行代码来获取这个 xml 文件的所有属性。
<Button
android:id="@+id/street_btn"
android:layout_width="wrap_content"
android:background="@drawable/layout_a" > <!-- your required code -->
</Button>
更改此行:
button2.setBackgroundColor(Color.BLUE);
并尝试这个:
button2.setBackgroundColor(Color.parseColor("#5AC8E2"));