我想在点击时更改按钮的颜色。 但是当我点击另一个第二个按钮时,第一个按钮必须用最后一个颜色着色。
我的意思是,当我点击whic按钮时,它必须用蓝色着色而其他按钮必须是非彩色的。这是代码;
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);
}
答案 0 :(得分:3)
//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);
}
希望有所帮助:)
答案 1 :(得分:2)
您可以使用drawable选择器在xml中定义按钮状态,然后默认情况下,单击的按钮将在处于单击状态时更改为您想要的颜色。
在drawable文件夹中创建一个新的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
答案 2 :(得分:0)
保留对先前修改过的Button的引用。当您进行新的单击时,将先前引用的Button设置为未着色,将当前按钮设置为蓝色,然后将该引用设置为当前按钮。
答案 3 :(得分:0)
当您需要在按下按钮时更改按钮的背景颜色时,您必须遵循这些,
//创建一个xml文件,就像drawable
中的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>
答案 4 :(得分:0)
更改此行:
button2.setBackgroundColor(Color.BLUE);
试试这个:
button2.setBackgroundColor(Color.parseColor("#5AC8E2"));