Android EditText禁止复制粘贴
1,自定义EditText package com.example.ui; import android.annotation.SuppressLint; import android.content.Context; import android.util.AttributeSet; import android.view.ActionMode; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; @SuppressLint("NewApi") public class NoMenuEditText extends EditText { private final Context context; /** * This is a replacement method for the base TextView class' method of the * same name. This method is used in hidden class android.widget.Editor to * determine whether the PASTE/REPLACE popup appears when triggered from the * text insertion handle. Returning false forces this window to never * appear. * * @return false */ boolean canPaste() { return false; } /** * This is a replacement method for the base TextView class' method of the * same name. This method is used in hidden class android.widget.Editor to * determine whether the PASTE/REPLACE popup appears when triggered from the * text insertion handle. Returning false forces this window to never * appear. * * @return false */ @Override public boolean isSuggestionsEnabled() { return false; } public NoMenuEditText(Context context) { super(context); this.context = context; init(); } public NoMenuEditText(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; init(); } public NoMenuEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context = context; init(); } private void init() { this.setCustomSelectionActionModeCallback(new ActionModeCallbackInterceptor()); this.setLongClickable(false); } /** * Prevents the action bar (top horizontal bar with cut, copy, paste, etc.) * from appearing by intercepting the callback that would cause it to be * created, and returning false. */ private class ActionModeCallbackInterceptor implements ActionMode.Callback { private final String TAG = NoMenuEditText.class.getSimpleName(); public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; } public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } public void onDestroyActionMode(ActionMode mode) { } } } 2,在layout.xml文件中这样使用 <com.example.ui.NoMenuEditText android:id="@+id/ddd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="禁止复制粘贴" />
不定期会发布一些实用的Java开发文章