package wuyou.com.cn.view;
import java.lang.reflect.Method;
import android.content.Context;
import android.text.Editable;
import android.text.Selection;
import android.text.Spannable;
import android.text.TextUtils;
import android.text.method.ArrowKeyMovementMethod;
import android.text.method.MovementMethod;
import android.util.AttributeSet;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
/**
* 可复制的TextView
*
* @author DJY
*
*/
public class TextPage extends TextView {
public TextPage(Context context)
{
super(context, null);
init();
}
@Override
public boolean onTextContextMenuItem(int id)
{
if (id == android.R.id.cut || id == android.R.id.paste)
return true;
return super.onTextContextMenuItem(id);
}
private void init()
{
setFocusableInTouchMode(true);
setLongClickable(true);
setCursorVisible(false);
setImeOptions(EditorInfo.TYPE_CLASS_TEXT);
try
{
Class<EditText> cls = EditText.class;
Method setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
setShowSoftInputOnFocus.setAccessible(false);
setShowSoftInputOnFocus.invoke(this, false);
}
catch (Exception e)
{
}
}
public TextPage(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}
public TextPage(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
}
@Override
protected boolean getDefaultEditable()
{
return true;
}
@Override
public Editable getText()
{
return (Editable) super.getText();
}
@Override
public void setText(CharSequence text, BufferType type)
{
super.setText(text, BufferType.EDITABLE);
}
/**
* Convenience for {@link Selection#setSelection(Spannable, int, int)}.
*/
public void setSelection(int start, int stop)
{
Selection.setSelection(getText(), start, stop);
}
/**
* Convenience for {@link Selection#setSelection(Spannable, int)}.
*/
public void setSelection(int index)
{
Selection.setSelection(getText(), index);
}
/**
* Convenience for {@link Selection#selectAll}.
*/
public void selectAll()
{
Selection.selectAll(getText());
}
/**
* Convenience for {@link Selection#extendSelection}.
*/
public void extendSelection(int index)
{
Selection.extendSelection(getText(), index);
}
@Override
public void setEllipsize(TextUtils.TruncateAt ellipsis)
{
if (ellipsis == TextUtils.TruncateAt.MARQUEE)
{
throw new IllegalArgumentException("EditText cannot use the ellipsize mode "
+ "TextUtils.TruncateAt.MARQUEE");
}
super.setEllipsize(ellipsis);
}
}