- 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="禁止复制粘贴" />
来源: http://www.phpxs.com/code/1001703/