1. 程式人生 > >EditText隱藏選擇貼上複製功能

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