我知道 Android 从某些版本开始可以检测到该字段是输入用户名/密码/姓氏/名字的字段吗?
但是我需要在 Xamarin Form 中做什么才能实现这一点?
最佳答案
在 API-27+ (Oreo+) 中,最好将 AutoCompleteTextView
与自动填充框架一起使用,但不是绝对需要。
注意:Xamarin.Forms
当前(最高 3.0.x
)未在任何内置中实现 Android 原生 AutoCompleteTextView
在 Forms 控件中,但您可以仅使用 Entry
控件(在 Android 上作为 TextView
实现)。
在基于 Android 的 TextView
或 AutoCompleteTextView
上,您应该以编程方式调用:
* 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 等...(当然,这取决于用户是否启用其中一项...)
输出:
关于android - 如何在 Xamarin From 中定义 Entry 用户名/密码/名字/姓氏,以便 android 会自动填充它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50943371/