1. 程式人生 > >點選一鍵切換讓文字從不可以編輯到編輯狀態

點選一鍵切換讓文字從不可以編輯到編輯狀態

這裡寫圖片描述
1.有時候我們app中經常出現一些需求,點選右上角的按鈕“編輯”就會變成“完成”,文本里面的EditText從不可以編輯輸入到可編輯輸入
這裡寫圖片描述
2.很簡單直接上佈局

 <RelativeLayout
        android:id="@+id/parttime_type"
        android:layout_width="match_parent"
        android:layout_height="43dp"
        android:layout_marginLeft="14dp"
        android:layout_marginRight="14dp"
android:layout_marginTop="14dp" > <TextView android:id="@+id/tv_parttime_type" style="@style/publish_jobs_left_title" android:text="型別" /> <TextView android:id="@+id/tv_input_parttime_type" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:drawableRight="@drawable/icon_expand_down" android:gravity="center" android:text="企業" android:textColor="@color/new_gray_666666"
android:textSize="16sp" /> <View android:id="@+id/view1" android:layout_width="match_parent" android:layout_height="1px" android:layout_alignParentBottom="true" android:background="@color/hint_gray" /> </RelativeLayout> <RelativeLayout android:id="@+id/parttime_title" android:layout_width="match_parent" android:layout_height="43dp" android:layout_marginLeft="14dp" android:layout_marginRight="14dp" android:layout_marginTop="14dp" android:focusable="true" android:focusableInTouchMode="true" > <TextView android:id="@+id/tv_parttime_title" style="@style/publish_jobs_left_title" android:text="釋出方" /> <EditText android:id="@+id/edt_publisher" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="14dp" android:layout_toRightOf="@+id/tv_parttime_title" android:background="@null" android:gravity="right|center" android:paddingLeft="14dp" android:singleLine="true" android:text="廣州吊炸天足浴" android:textColor="@color/new_gray_666666" android:textSize="16sp" /> <View android:id="@+id/view2" android:layout_width="match_parent" android:layout_height="1px" android:layout_alignParentBottom="true" android:background="@color/hint_gray" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="43dp" android:layout_marginLeft="14dp" android:layout_marginRight="14dp" android:layout_marginTop="14dp" android:focusable="true" android:focusableInTouchMode="true" > <TextView android:id="@+id/tv_contact" style="@style/publish_jobs_left_title" android:text="聯絡人" /> <EditText android:id="@+id/edt_contact_name" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="14dp" android:layout_toRightOf="@+id/tv_contact" android:background="@null" android:gravity="right|center" android:paddingLeft="14dp" android:singleLine="true" android:text="吊炸天" android:textColor="@color/new_gray_666666" android:textSize="16sp" /> <View android:id="@+id/view3" android:layout_width="match_parent" android:layout_height="1px" android:layout_alignParentBottom="true" android:background="@color/hint_gray" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="43dp" android:layout_marginLeft="14dp" android:layout_marginRight="14dp" android:layout_marginTop="14dp" android:focusable="true" android:focusableInTouchMode="true" > <TextView android:id="@+id/tv_telephone" style="@style/publish_jobs_left_title" android:text="手機" /> <EditText android:id="@+id/edt_telephone_number" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="14dp" android:layout_toRightOf="@+id/tv_telephone" android:background="@null" android:gravity="right|center" android:inputType="number" android:paddingLeft="14dp" android:singleLine="true" android:text="15088888888" android:textColor="@color/new_gray_666666" android:textSize="16sp" /> <View android:id="@+id/view4" android:layout_width="match_parent" android:layout_height="1px" android:layout_alignParentBottom="true" android:background="@color/hint_gray" /> </RelativeLayout>

3.首先一個思路就要遍歷所有的EdictText,點選“編輯”時候讓EdictText改變狀態
4.全域性變數所有EditText

private EditText publishEdt,contactEdt,telephoneEdt,emailEdt,areaEdt,worksEdt;

5.簡單的findviewbyid

publishEdt=findMyViewById(R.id.edt_publisher);
        contactEdt=findMyViewById(R.id.edt_contact_name);
        telephoneEdt=findMyViewById(R.id.edt_telephone_number);
        emailEdt=findMyViewById(R.id.edt_email_number);
        areaEdt=findMyViewById(R.id.edt_area_detail);
        worksEdt=findMyViewById(R.id.edt_works_details);

6.在Onresume裡面呼叫自己定義的一個方法
setEdtList();

@Override
    protected void onResume() {
        super.onResume();
        findById();
        setListeners();
        setEdtList();
        setBgViews();
        setEdictale(false);
        setBgViewsDeep(true);
    }
private void setEdtList() {
        edts=new ArrayList<EditText>();
        edts.add(publishEdt);
        edts.add(contactEdt);
        edts.add(telephoneEdt);
        edts.add(emailEdt);
        edts.add(areaEdt);
        edts.add(worksEdt);     
    }

7.點選狀態改變編輯狀態
setEdictale(true);和setEdictale(false);

if (edtTv.getText().toString().equals("編輯")) {
                edtTv.setText("完成");
                setEdictale(true);
                setBgViewsDeep(true);
            } else if(edtTv.getText().toString().equals("完成")) {
                edtTv.setText("編輯");
                setEdictale(false);
                setBgViewsDeep(false);
            }

8.做個迴圈讓之前的edict集合所有做三個方法
-setFocusable
-setFocusableInTouchMode
-setEnabled

private void setEdictale(Boolean edictale){
        for (int i = 0; i < edts.size(); i++) {
            edts.get(i).setFocusable(edictale);
            edts.get(i).setFocusableInTouchMode(edictale);
            edts.get(i).setEnabled(edictale);
        }
    }

自己根據需要傳進不同的布林值型別,現在我們就可以一鍵解決EdictText文字從不可以編輯到編輯狀態。
如有問題,請留言,有更好的方法也可以多多指教。