2016-03-27 3 views
0

Я хочу изменить цвет фона кнопки, при нажатии кнопки этот код не показывает никаких ошибок, ни он работает.Android Нажмите кнопку, чтобы не изменить цвет backgroud

capstone.setOnClickListener(new HandleClick()); 
} 
    private class HandleClick implements View.OnClickListener{ 
     @Override 
     public void onClick(View v) { 
      Button btn = (Button) v; 
      String text = btn.getText().toString(); 
      btn.setBackgroundResource(R.color.btnClick); 
      Log.d("color", R.color.btBackground + ""); // D/color: 2131427344 
      Toast toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT); 
      toast.show(); 
     } 
    } 

В Log.d() отображается значение цвета, но цвет кнопки не изменяется.

+1

Это была просто глупая ошибка, я использовал тот же цвет фона, что и по умолчанию, и при нажатии кнопки. –

ответ

0

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

 capstone.setOnTouchListener(new HandleTouch()); 
    } 

private class HandleTouch implements View.OnTouchListener{ 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Button btn = (Button) v; 
      if(event.getAction() == MotionEvent.ACTION_DOWN) { 
       btn.setBackgroundResource(R.color.btnClick); 
      } else if (event.getAction() == MotionEvent.ACTION_UP) { 
       btn.setBackgroundResource(R.color.btBackground); 
      } 
      return false; 
     } 
    } 
1

setBackgroundResource(int) способ ждет, чтобы нанести объект. Если вы хотите использовать цвета, используйте соответствующий метод, который является setBackgroundColor(int)

и вызвать btn.invalidate(); после этой

Более подробной информации об Android Developers http://developer.android.com/reference/android/view/View.html#setBackgroundResource(int)

+0

Я попробовал 'btn.setBackgroundColor (getResources(). GetColor (R.color.btBackground)), но это не решило проблему. –

+0

попытайтесь добавить это после установки цвета фона: 'btn.invalidate();' – Mehdi

+0

благодарим вас за руководство. –

0

Функции setBackgroundResource сделает кнопку.

попробовать

setBackground(this.getResources().getDrawable(R.drawable.btBackground)) 
+0

Я ничего не сделал в доступных, будет ли он работать? –

1

Если вам необходимо использовать цветной ресурс, как цвет фона тем, что вам нужно будет получить цвет ARGB от ресурсов с использованием getColor(), а затем установить, что в setBackgroundColor().

btn.setBackgroundColor(getResources().getColor(R.color.btBackground, null)); 
+0

все еще не изменилось в цвете, я только что скопировал ваш код и заменил мой, можете ли вы предложить, если есть что-то еще, что я должен изменить? –

+0

Как вы определили R.color.btBackground? Что вы ожидаете увидеть? –

+0

yes ' # C51162' - это цвет в цветах.xml. –

Смежные вопросы