EditText隱藏選擇貼上複製功能
開發中的小功能,因為業務的需求,我們有時候不需要輸入框有選擇複製貼上的功能,我在網上找了很多,都不能實現,最後自己通過實踐,使用最簡單的方法實現了這個同能,在此,我分享我找到的方法和自己的方法。
方法一:
在API 11以下的版本很簡單,只需要在Xml佈局檔案或者用程式碼把長按屬性設定成false就可以,或者在java方法中,將長按屬性設定為false,
android:longClickable="false"或者editText.setLongClickable(false);
方法二:
但是如果在API 11及以上的話,取消長按將會無效,解決辦法見下:
editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});
editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
方法三:
我在使用過程中,以上兩個方法都沒有達到我的效果,最後我自己寫了的方法,實現很簡單,並且到到預想的效果,程式碼見下,希望對大家有幫助。
EditText的佈局檔案
<EditText android:id="@+id/et_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:longClickable="false"
android:textIsSelectable="false"
android:selectAllOnFocus="false"/>
java程式碼
private EditText et_password;
private InputMethodManager imm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
et_password = (EditText)findViewById(R.id.et_password);
et_password.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_UP)
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
return true;
}
});
}