protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
TextView textview = (TextView)FindViewById(Resource.Id.textView1);
textview.TextFormatted = new Android.Text.SpannableString("Chapter 1\n\nThis is a pen.\nThis is a window.");
textview.SetTextIsSelectable(true);
textview.Touch += delegate (object sender, View.TouchEventArgs e)
{
var widget = (TextView)sender;
var buffer = (Android.Text.ISpannable)widget.TextFormatted;
if (buffer.Length() != 0 && (e.Event.Action == MotionEventActions.Up || e.Event.Action == MotionEventActions.Down || e.Event.Action == MotionEventActions.Move))
{
if (e.Event.Action == MotionEventActions.Up)
{
var line = widget.Layout.GetLineForVertical((int)e.Event.GetY() + widget.ScrollY - widget.TotalPaddingTop);
var offset = widget.Layout.GetOffsetForHorizontal(line, (int)e.Event.GetX() + widget.ScrollX - widget.TotalPaddingLeft);
if (buffer.CharAt(offset) != '\n')
{
int start = int.MaxValue;
for (int i = offset - 1; i >= 0; i--)
{
if (Java.Lang.Character.IsLetterOrDigit(buffer.CharAt(i)) != true)
{
start = i + 1;
break;
}
}
int end = int.MinValue;
for (int i = start + 1; i < buffer.Length(); i++)
{
if (Java.Lang.Character.IsLetterOrDigit(buffer.CharAt(i)) != true)
{
end = i - 1;
break;
}
}
if (end >= start)
{
Android.Text.Selection.SetSelection(buffer, start, end + 1);
}
}
}
else if (e.Event.Action == MotionEventActions.Down)
{
//
}
else if (e.Event.Action == MotionEventActions.Move)
{
//
}
}
else
{
Android.Text.Selection.RemoveSelection(buffer);
}
};
}
}