如何在Xamarin中定义条目用户名/密码/名字/姓氏,以便android自动填充?

时间:2018-06-20 08:10:22

标签: android xamarin xamarin.forms xamarin.android

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

但是要实现此功能,我需要在Xamarin Form中做什么?

1 个答案:

答案 0 :(得分:3)

在API-27 +(Oreo +)中,最好在自动填充框架中使用AutoCompleteTextView,但并非绝对必要。

注意:当前Xamarin.Forms(最多3.0.x)尚未在任何内置窗体的控件中实现Android本机AutoCompleteTextView,但您只能使用{{1 }}控件(在Android上实现为Entry

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

AutoCompleteTextView

示例:

* SetAutofillHints
* ImportantForAutofill

注意:在本机usernameView.SetAutofillHints(new string[2] {"emailAddress", "userName"}); usernameView.ImportantForAutofill = ImportantForAutofill.Yes; 中,您只需在AXML布局中设置这些属性即可。

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

注意:请查看Android文档,以了解有关Xamarin.Android字符串应设置为...的基础知识。

AutofillHints中,您可以通过自定义渲染器或效果来做到这一点:

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

Xamarin.Forms

用法:

[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()
        {
        }
    }
}

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

输出:

enter image description here