Button 點選後改變顏色 (不是點選後改變顏色又恢復)
阿新 • • 發佈:2019-01-10
慣例先上效果圖
1.首先我們想製作這個按鈕的樣式
建立一個selector的xml檔案規定了,按鈕,被按下和不被按下時的背景顏色不懂的同學點選這裡
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@color/white" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@color/yellow" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@color/yellow" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@color/yellow" />
<!-- Pressed -->
<item android:state_selected="true" android:state_pressed="true" android:drawable="@color/yellow" />
<item android:state_pressed="true" android:drawable="@color/yellow" />
</selector>
2.在button佈局檔案裡設定背景色為selector的樣式
android:background="@drawable/selector_icon_list"
3.我們在onClick方法裡新增獲取焦點的程式碼(那三行)
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setFocusable(true);
v.requestFocus();
v.requestFocusFromTouch();
// btn.setFocusable(true);
//btn.setFocusableInTouchMode(true);
//btn.requestFocus();
//btn.requestFocusFromTouch();
}
});
然後就實現了