public class TextPage extends EditText {
private int off;
public TextPage(Context context){
super(context);
initialize();
}
public TextPage(Context context,AttributeSet paramAttributeSet){
super(context,paramAttributeSet);
initialize();
}
private void initialize(){
setGravity(Gravity.TOP);
setBackgroundColor(Color.WHITE);
}
protected void onCreateContextMenu(ContextMenu menu){
//不做任何处理、为了阻止长按的时候弹出上下文菜单
}
protected MovementMethod getDefaultMovementMethod(){ //这个方法什么意思?
return null;
}
public boolean getDefaultEditable(){
return false;
}
public boolean onTouchEvent(MotionEvent event){
int action = event.getAction();
Layout layout = getLayout();
int line = 0;
switch (action){
case MotionEvent.ACTION_DOWN:
line = layout.getLineForVertical(getScrollY()+(int)event.getY());
off = layout.getOffsetForHorizontal(line,(int)event.getX());
Selection.setSelection(getEditableText(), off);
break;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
line = layout.getLineForVertical(getScrollY()+(int)event.getY());
int curOff = layout.getOffsetForHorizontal(line,(int)event.getX());
Selection.setSelection(getEditableText(),off,curOff);
CharSequence sel = getEditableText().toString().subSequence(off,curOff);
String s1 = (String)sel;
Log.d("MainActivity", s1);
break;
}
return true;
}
}
private int off;
public TextPage(Context context){
super(context);
initialize();
}
public TextPage(Context context,AttributeSet paramAttributeSet){
super(context,paramAttributeSet);
initialize();
}
private void initialize(){
setGravity(Gravity.TOP);
setBackgroundColor(Color.WHITE);
}
protected void onCreateContextMenu(ContextMenu menu){
//不做任何处理、为了阻止长按的时候弹出上下文菜单
}
protected MovementMethod getDefaultMovementMethod(){ //这个方法什么意思?
return null;
}
public boolean getDefaultEditable(){
return false;
}
public boolean onTouchEvent(MotionEvent event){
int action = event.getAction();
Layout layout = getLayout();
int line = 0;
switch (action){
case MotionEvent.ACTION_DOWN:
line = layout.getLineForVertical(getScrollY()+(int)event.getY());
off = layout.getOffsetForHorizontal(line,(int)event.getX());
Selection.setSelection(getEditableText(), off);
break;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
line = layout.getLineForVertical(getScrollY()+(int)event.getY());
int curOff = layout.getOffsetForHorizontal(line,(int)event.getX());
Selection.setSelection(getEditableText(),off,curOff);
CharSequence sel = getEditableText().toString().subSequence(off,curOff);
String s1 = (String)sel;
Log.d("MainActivity", s1);
break;
}
return true;
}
}