1. 首先繼承EditText
2. 並重寫onTouchEvent方法
public boolean onTouchEvent(MotionEvent event) { Editable ed=this.getEditableText(); //獲得action int action = event.getAction(); //用來顯示文本的Layout布局 Layout layout = this.getLayout();
//獲得第幾行
int pointY = layout.getLineForVertical(getScrollY()+(int)event.getY()); switch(action) { case MotionEvent.ACTION_DOWN: /* 手指按下時記憶起始點,第一個是行數,第二個是開始點 */ startPoint=layout.getOffsetForHorizontal(pointY,event.getX());
//第一個參數Editable是子類 , 第二個參數是開始點
Selection.setSelection(ed, startPoint); break; case MotionEvent.ACTION_MOVE: /* 手指移動時記憶終止點 */ endPoint=layout.getOffsetForHorizontal(pointY,event.getX()); Selection.setSelection(ed,startPoint,endPoint); break; } return true; }
3. 根據上面的startPoint與endPoint截取字串
public String getSelectedText() { return this.getText().toString().substring(startPoint,endPoint); }
4. 獲得 ClipboardManager
ClipboardManage cManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
5. 複製已截取字串 ev是EditeText的執行個體
cManager.setText(ev.getSelectedText());
6. 獲得 已複製字串
setText(cManager.getText());