Android EditText禁止復制粘貼

pwmd 9年前發布 | 4K 次閱讀 Java Android

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="禁止復制粘貼" /></pre>

 本文由用戶 pwmd 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!