我试图通过创建GestureDetector和侦听器并在onDoubleTap中执行selecteAll来双击EditText(不是文本本身而是文本外的空白区域)时选择所有文本。 不幸的是,在选择所有文本后,文本将被取消选择。
如果双击EditText空白区,如何选择所有文本? 谢谢!
自定义EditText:
public class TextEditText : EditText, View.IOnTouchListener
{
GestureDetector gestureDetector;
public TextEditText(Context context) : base(context)
{
Init();
}
public TextEditText(Context context, IAttributeSet attrs) :
base(context, attrs)
{
Init();
}
public TextEditText(Context context, IAttributeSet attrs, int defStyle) :
base(context, attrs, defStyle)
{
Init();
}
public TextEditText(IntPtr a, Android.Runtime.JniHandleOwnership b) : base(a, b)
{
Init();
}
void Init()
{
gestureDetector = new GestureDetector(new SelectTextDoubleTapListener(this));
SetOnTouchListener(this);
}
public bool OnTouch(View v, MotionEvent e)
{
return gestureDetector.OnTouchEvent(e);
}
}
然后是听众:
public class SelectTextDoubleTapListener : GestureDetector.SimpleOnGestureListener
{
EditText editText;
public SelectTextDoubleTapListener(EditText et)
{
editText = et;
}
public override bool OnDoubleTap(MotionEvent e)
{
if (editText.Text.Length > 0)
{
editText.SetSelection(editText.Text.Length);
editText.SelectAll();
}
return false; // return true does not work either
}
}
答案 0 :(得分:0)
不幸的是,在选择所有文本之后,文本将被取消选择。
我使用SetSelectAllOnFocus(true)
中的OnDoubleTap
来解决此问题
例如:
public override bool OnDoubleTap(MotionEvent e)
{
if (editText.Text.Length > 0)
{
editText.SetSelectAllOnFocus(true);
editText.ClearFocus();
}
return true;
}