1

Когда я объявляю кнопку в действии и устанавливаю атрибут , при нажатии автоматически изменяется цвет фона кнопки.Изменить цвет фона кнопки в событии клика?

Теперь у меня есть кнопка на фрагменте. Поскольку я не могу использовать здесь, я делаю это вместо onClickListener. Кнопка работает, однако она больше не меняет стиль.

Должен ли я сделать это вручную? Как?

+0

Вы можете использовать 'Фоновая Selector' как фон вашей кнопки, чтобы обрабатывать 'нажатые',' сфокусированные' ... состояния. – Rami

ответ

0

Нам нужен XML-файл, drawable селектор. Я назвал этот файл с res/drawable/bg_button.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_focused="true" android:drawable="@drawable/bg_button_pressed"/> 
    <item android:state_pressed="true" android:drawable="@drawable/bg_button_pressed" /> 
    <item android:drawable="@drawable/bg_button_normal" /> <!-- normal state --> 
</selector> 

res/drawable/bg_button_pressed.xml Для:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="color when pressed" /> 
</shape> 

Создать новый файл XML, имя его res/drawable/bg_button_normal.xml и скопировать выше код. Затем замените android:color обычным цветом, т. Е. Когда кнопка находится в нормальном состоянии.

И наконец:

<Button 
    android:id="@+id/..." 
    android:text="@string/..." 
    android:background="@drawable/bg_button"/> 

Если вы не имеете res/drawable папку, создать новый.

0

Попробуйте это,

  1. Reference ваша кнопка

    yourButton = (Button) <fragment name>.findViewById(R.id.<button id>); 
    yourButton.setOnClickListener(this); 
    
  2. И в вашем случае щелчка,

    @Override 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    
    case R.id.yourButton: 
        yourButton.setBackgroundColor(getActivity().getResources().getColor(<colour code>)); 
        break; 
    
    default: 
        break; 
    } 
    }