public class TextContextMenuItemEditText extends android.support.v7.widget.AppCompatEditText {
static final int ID_SELECT_ALL = android.R.id.selectAll;
static final int ID_UNDO = android.R.id.undo;
static final int ID_REDO = android.R.id.redo;
static final int ID_CUT = android.R.id.cut;
static final int ID_COPY = android.R.id.copy;
static final int ID_PASTE = android.R.id.paste;
static final int ID_SHARE = android.R.id.shareText;
static final int ID_PASTE_AS_PLAIN_TEXT = android.R.id.pasteAsPlainText;
static final int ID_REPLACE = android.R.id.replaceText;
private onTextContextMenuItemListener onTextContextMenuItemListener;
public TextContextMenuItemEditText(Context context) {
super(context);
}
public TextContextMenuItemEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TextContextMenuItemEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onTextContextMenuItem(int id) {
switch (id) {
case ID_SELECT_ALL:
if (null != onTextContextMenuItemListener) {
if (onTextContextMenuItemListener.selectAll()) {
return true;
}
}
case ID_UNDO:
if (null != onTextContextMenuItemListener) {
if (onTextContextMenuItemListener.undo()) {
return true;
}
}
case ID_REDO:
if (null != onTextContextMenuItemListener) {
if (onTextContextMenuItemListener.redo()) {
return true;
}
}
case ID_PASTE:
if (null != onTextContextMenuItemListener) {
ClipboardManager cm = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
if (null != cm && cm.hasPrimaryClip()) {
//一般取出剪贴板里的第一条内容
CharSequence content = cm.getPrimaryClip().getItemAt(0).coerceToText(getContext());
if (onTextContextMenuItemListener.paste(content.toString())) {
return true;
}
}
}
case ID_PASTE_AS_PLAIN_TEXT:
if (null != onTextContextMenuItemListener) {
if (onTextContextMenuItemListener.pasteAsPlainText()) {
return true;
}
}
case ID_CUT:
if (null != onTextContextMenuItemListener) {
if (onTextContextMenuItemListener.cut()) {
return true;
}
}
case ID_COPY:
if (null != onTextContextMenuItemListener) {
if (onTextContextMenuItemListener.copy()) {
return true;
}
}
case ID_REPLACE:
if (null != onTextContextMenuItemListener) {
if (onTextContextMenuItemListener.replaceText()) {
return true;
}
}
case ID_SHARE:
if (null != onTextContextMenuItemListener) {
if (onTextContextMenuItemListener.shareText()) {
return true;
}
}
}
return super.onTextContextMenuItem(id);
}
public void setOnTextContextMenuItemListener(TextContextMenuItemEditText.onTextContextMenuItemListener onTextContextMenuItemListener) {
this.onTextContextMenuItemListener = onTextContextMenuItemListener;
}
public abstract static class onTextContextMenuItemListener {
public boolean selectAll() {
return false;
}
public boolean undo() {
return false;
}
public boolean redo() {
return false;
}
public boolean cut() {
return false;
}
public boolean copy() {
return false;
}
public boolean paste(String content) {
return false;
}
public boolean shareText() {
return false;
}
public boolean pasteAsPlainText() {
return false;
}
public boolean replaceText() {
return false;
}
}
}
可以监听 editText 各种状态的 editTextView
最新推荐文章于 2024-04-16 06:42:02 发布