2016-05-27 115 views
2

我創建了一個Button b,其背景色爲黑色。當我點擊它時,我希望它的顏色只在我有手指的時候變成綠色,即我一直關注它。如何更改android studio中按鈕水龍頭上按鈕的顏色

+0

請提供您所做的工作,並告訴我們您遇到問題的位置。 – Flummox

+0

看到這個:http://stackoverflow.com/a/1726352/5250273 –

+1

這裏是相同的問題回答清楚http://stackoverflow.com/questions/3882064/how-to-change-color-of-button-in- android-when-clicked – fReeTaSte

回答

5

使用在您的按鈕選擇聽。

<Button xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" android:layout_width="fill_parent" 
    android:gravity="center" android:focusable="true" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:background="@android:drawable/list_selector_background" /> 

這裏是list_selector_background 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="@color/green"/> <!-- pressed --> 
    <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused --> 
    <item android:drawable="@color/black"/> <!-- default --> 
</selector> 
0

ACTION_UP - >的壓制手勢完成時,運動包含 最終釋放位置以及由於 任何中間點最後向下或移動事件。

ACTION_DOWN - >按下的手勢已經開始,動作包含 的初始起始位置。

你應該設置你的按鈕的OnTouchListener

button.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction() == MotionEvent.ACTION_DOWN) { 
      btn.setBackgroundColor(getResources().getColor(R.color.colorAccent)); 
     } else if (event.getAction() == MotionEvent.ACTION_UP) { 
      btn.setBackgroundColor(getResources().getColor(R.color.white)); 
     } 
    } 
}; 

檢查motion events

+0

as getColor()is used to use,btn.setBackgroundColor(ContextCompat.getColor(getActivity(),R.color.colorAccent)); @ Diptangsu Goswami –

2

您需要使用onTouchListener當用戶按下按鈕(ACTION_DOWN),當用戶釋放它(ACTION_UP)

b.setOnTouchListener(new OnTouchListener() { 

public boolean onTouch(View v, MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_UP) { 
     // reset the background color here 
     b.setBackgroundColor(Color.GREEN); 

    }else{ 
     // Change the background color here 
     b.setBackgroundColor(Color.RED); 

    } 
    return false; 
    } 
}); 
+0

而不是像這樣註冊觸摸事件,我們可以使選擇器可繪製使用多種顏色/繪製不同的狀態。 – seema

0

使這個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="@color/green"/> 
<item android:drawable="@color/black"/> 
</selector>