Android ... Изменение цвета кнопки при нажатии, но у меня много кнопок? - PullRequest
0 голосов
/ 22 мая 2011

Я хочу изменить цвет кнопки при нажатии. Но когда я нажал другую вторую кнопку, первая кнопка должна быть окрашена в последний цвет.

Я имею в виду, что когда я нажимаю какую кнопку, она должна быть синего цвета, а остальные кнопки не должны быть цветными. вот код;

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

Ответы [ 5 ]

3 голосов
/ 22 мая 2011
//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);
}

Надеюсь, это поможет :)

2 голосов
/ 22 мая 2011

вы можете использовать селектор drawable для определения состояний кнопки в 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

0 голосов
/ 12 июня 2015

измените эту строку:

button2.setBackgroundColor(Color.BLUE);

и попробуйте это:

button2.setBackgroundColor(Color.parseColor("#5AC8E2"));
0 голосов
/ 13 декабря 2012

Когда вам нужно изменить цвет фона кнопки, когда она нажата, тогда вы должны следовать им,

// создать файл XML, например, файл layout_a.xml в drawable

<?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>
0 голосов
/ 22 мая 2011

Сохранить ссылку на ранее измененную кнопку. Если у вас есть новый щелчок, установите прежнюю ссылку на кнопку «Назад» на неокрашенную, установите для текущей кнопки значение «Синий», а затем установите для этой ссылки текущую кнопку.

...