點選一鍵切換讓文字從不可以編輯到編輯狀態
阿新 • • 發佈:2019-01-23
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文字從不可以編輯到編輯狀態。
如有問題,請留言,有更好的方法也可以多多指教。