/// <summary>
/// 定义了一个扩展方法 SetFocus,作用是设置 EditText 控件的焦点,并可以选择全部选中或者仅选中最后一个字符
/// 给 EditText 添加焦点的扩展方法,可选择是否全部选中
/// </summary>
/// <param name="ed"></param>
/// <param name="allSelect"></param>
public static void SetFocus(this EditText ed,bool allSelect=true)
{
// 创建一个模拟触摸事件的 MotionEvent,模拟按下动作
var touch = MotionEvent.Obtain(SystemClock.UptimeMillis(), SystemClock.UptimeMillis(), MotionEventActions.Down, ed.ScaleX, ed.ScaleY, 0);
// 将模拟触摸事件 touch 分发到目标控件 ed,模拟按下动作
ed.DispatchTouchEvent(touch);
// 创建另外一个 MotionEvent,模拟松开动作
touch = MotionEvent.Obtain(SystemClock.UptimeMillis(), SystemClock.UptimeMillis(), MotionEventActions.Up, ed.ScaleX, ed.ScaleY, 0);
// 将模拟触摸事件 touch 分发到目标控件 ed,模拟松开动作
ed.DispatchTouchEvent(touch);
// 设置触摸聚焦
ed.FocusableInTouchMode = true;
// 设置输入框可聚集
ed.Focusable = true;
// 请求焦点
ed.RequestFocus();
// 获取焦点
ed.FindFocus();
//模拟点击动作
ed.PerformClick();
// 如果需要全部选中
if (allSelect)
{
// 选中全部文本
ed.SelectAll();
}
else
{
// 判断文本框中是否有文本
if (ed.Text?.Length > 0)
{
// 将光标定位到文本末尾
ed.SetSelection(ed.Text.Length);
}
}
// 模拟点击动作
ed.CallOnClick();
// 再次模拟点击动作
ed.PerformClick(); }

Xamarin.Android给 EditText 添加焦点的扩展方法的更多相关文章

  1. Android向通讯录添加联系人的一般方法

    Android向通讯录添加联系人的一般方法 以一个简单的例子加以说明,记得需要相应的权限: 测试代码,关键的内容就在add函数里面. package zhangphil.demo; import an ...

  2. Android 给EditText添加下划线

    在安卓高版本,默认是有下划线的,其默认下划线的颜色是由其主题颜色来控制的! 控制如下: <style name="AppTheme" parent="Theme.A ...

  3. Android 隐藏EditText的焦点

    在页面的开发过程中,我们可能会遇到这样的情况,打开某个页面(Activity)时,如果该页面中有EditText组建,则会自动弹出软键盘(因为该EditText自动获取焦点了),这样很容易影响用户体验 ...

  4. 给 string 添加一个 GetInputStream 扩展方法

    有时候,我们须要读取一些数据,而无论这数据来源于磁盘上的数据文件,还是来源于网络上的数据.于是.就有了以下的 StringExtensions.cs: using System; using Syst ...

  5. Android开发:TextView添加超链接的简便方法

    TextView中加入超链接的方式很多,但下面的方式应该的最简便合理的 strings.xml中定义字串 <string name="blog"><a href= ...

  6. C# 向IQueryable添加一个Include扩展方法

    using System; using System.Data.Objects; using System.Linq; namespace OutOfMemory.Codes { /// <su ...

  7. 添加一个js扩展方法

    String.prototype.repeatify=String.prototype.repeatify || function(times){ var str=''; for(var i=0;i& ...

  8. xamarin Android activity生命周期详解

    学Xamarin我为什么要写这样一篇关于Android 的activity生命周期的文章 已经学Xamarin android有一段时间了,现在想起当初Xamarin也走了不少的弯路.当然Xamari ...

  9. xamarin android如何将Java.Lang.Object类型转成C#类型

    问题起源 其实这个标题也可以换一个更准确一点,因为我遇到的问题是: xamarin android中的Class继承了Java.Lang.Object ,将json序列化成c#类型时发现无法赋值,序列 ...

  10. ASP.NET MVC学前篇之扩展方法、链式编程

    ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的 ...

随机推荐

  1. Git 覆盖刚刚 commit 的 message

    场景重现 通常噼里啪啦键盘一段猛搓后(写代码啊),然后会 git add . git commit -m "modify semo" # 注意上面 semo 应该是 some,发现 ...

  2. java学习-5-核心类:字符串StringBuilder

    对字符串进行拼接,用java标准库提供的可变对象:StringBuilder. StringBuilder sb = StringBuilder(1024); for (int i = 0;i < ...

  3. DevSecOps的实现与相关开源工具

    DevSecOps的实现与相关开源工具 DevSecOps是一种以自动化方式在DevOps流程中集成安全工具的方法.DevSecOps不仅仅是引入新的安全工具,还包括关于使用这些工具的必要知识.这需要 ...

  4. 从零开始:在Qt中使用OpenGL绘制指南

    本文只介绍基本的 QOpenGLWidget 和 QOpenGLFunctions 的使用,想要学习 OpenGL 的朋友,建议访问经典 OpenGL 学习网站:LearnOpenGL CN 本篇文章 ...

  5. 🎀idea - properties文件unicode中文显示

    简介 idea中properties文件中文默认展示为unicode码 unicode 中文展示为 \u开头的ASCII 调整中文显示 idea -> settings -> Editor ...

  6. springboot整合websocket实现消息推送

    ​最近想起之前项目里面的一个实现,是关于订阅推送的,当粉丝订阅了大V或者说作者发布的内容被评论和点赞之后,对应的用户会受到通知,当然,本身系统用户并不多,所以直接采用的是轮训的方式,由前端这边定时向后 ...

  7. python获取日期(今日、昨日),及格式化日期的方法(datetime)

    在写爬虫的过程中发现,很多网站的信息均以当天日期为链接组成部分,但是格式又不相同 有些是20210328,有些是2021-03-28,还有些2021/03/28 如果一次爬取来源不同网站的信息,需要对 ...

  8. python,获取当前日期且以当前日期为名称创建文件名

    爬虫爬取信息时,需要把爬取的内容存到txt文档中,且爬虫是每天执行,以日期命名能避免出现名称重复等问题,解决方法如下 import time import os import sys path = o ...

  9. Java 的 CMS 垃圾回收器和 G1 垃圾回收器在记忆集的维护上有什么不同?

    Java 的 CMS 垃圾回收器和 G1 垃圾回收器在记忆集的维护上的不同 记忆集(Remembered Set, RSet)是垃圾回收器用来跟踪跨代引用的重要结构,它记录老年代对象对新生代对象的引用 ...

  10. 878. 第 N 个神奇数字

    878. 第 N 个神奇数字 题解:二分 + gcd 1~n中,能被a整除的个数 n/a , 能被b整除的个数 n/b, 能被a 且 b 整除的个数 n/ gcd(a,b) 则 1~n中能被a或b整除 ...