1. 程式人生 > >Button 點選後改變顏色 (不是點選後改變顏色又恢復)

Button 點選後改變顏色 (不是點選後改變顏色又恢復)

慣例先上效果圖

效果

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

                }
            });

然後就實現了