人造人..单击时更改按钮颜色,但我有很多按钮



我想在单击时更改按钮的颜色。但是当我点击另一个第二个按钮时,第一个按钮必须用最后一个颜色着色。

我的意思是,当我单击哪个按钮时,它必须用蓝色着色,其他按钮必须是非彩色的。 这是代码;

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

相关内容

  • 没有找到相关文章

最新更新