android - 如何在 Xamarin From 中定义 Entry 用户名/密码/名字/姓氏,以便 android 会自动填充它?

标签 android xamarin xamarin.forms xamarin.android

我知道 Android 从某些版本开始可以检测到该字段是输入用户名/密码/姓氏/名字的字段吗?

但是我需要在 Xamarin Form 中做什么才能实现这一点?

最佳答案

在 API-27+ (Oreo+) 中,最好将 AutoCompleteTextView 与自动填充框架一起使用,但不是绝对需要。

注意:Xamarin.Forms 当前(最高 3.0.x)未在任何内置中实现 Android 原生 AutoCompleteTextView在 Forms 控件中,但您可以仅使用 Entry 控件(在 Android 上作为 TextView 实现)。

在基于 Android 的 TextViewAutoCompleteTextView 上,您应该以编程方式调用:

* SetAutofillHints
* ImportantForAutofill

示例:

usernameView.SetAutofillHints(new string[2] {"emailAddress", "userName"});
usernameView.ImportantForAutofill = ImportantForAutofill.Yes;

注意:在 native Xamarin.Android 中,您只需在 AXML 布局中设置这些属性即可。

回复:https://codelabs.developers.google.com/codelabs/optimize-autofill/#0

注意:查看 Android 文档,了解有关 AutofillHints 字符串应设置为什么的基础知识...

Xamarin.Forms 中,您可以通过自定义渲染器或效果来执行此操作:

Xamarin.Forms 自动填充 Android 效果示例:

[assembly: ResolutionGroupName("EffectsAutoFill")]
[assembly: ExportEffect(typeof(AutoFillUserNameEffect), "AutoFillUserNameEffect")]

namespace Effects
{
    public class AutoFillUserNameEffect : PlatformEffect
    {
        protected override void OnAttached()
        {
            var textView = (TextView)Control;
            if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
            {
                textView.SetAutofillHints(new string[2] { "emailAddress", "userName" });
                textView.ImportantForAutofill = ImportantForAutofill.Yes;
            }

        protected override void OnDetached()
        {
        }
    }
}

用法:

emailEntry.Effects.Add(Effect.Resolve("EffectsAutoFill.AutoFillUserNameEffect"));

您的表单应用程序现在将触发用户在其设备上启用的任何自动填充服务:Google、LastPass 等...(当然,这取决于用户是否启用其中一项...)

输出:

enter image description here

关于android - 如何在 Xamarin From 中定义 Entry 用户名/密码/名字/姓氏,以便 android 会自动填充它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50943371/

相关文章:

android - 如何从 Firemonkey/Delphi 中的条码扫描仪获取数据

c# - HttpWebRequest.Headers[HttpRequestHeader.Referer] 因错误而失败

java - Xamarin Forms java.exe"退出代码 1 (ProGuard)

android - 无法打开目录 Xamarin Forms

xamarin.forms - 防止双击android Prism xamarin

java - Roboguice 未注入(inject)对象并导致空指针异常

java - 如何调用包含异常处理程序的方法

android - 如何在 Android 上创建两行 TextView?

xamarin - 如何在 DelegateCommand 中使用异步方法

android - Xamarin Forms 将 WebView 内容获取为字符串