有没有办法在Xamarin表单上禁用自动资本化'XAML
本文关键字:资本化 XAML Xamarin 表单 有没有 | 更新日期: 2023-09-27 18:12:32
我刚刚开始在Xamarin工作,我正在写一个针对iOS和Android的应用程序。我试着把我所有的UI设计保持在它们之间的公共库中,我开始发现界限有点模糊。我目前的要求是禁用XAML中"Entry"标记对象的自动资本化。这是可以通过标记来完成的吗?我找不到任何支持这种行为的属性。如果不是,我该怎么做呢?
如果您计划在许多页面中使用此键盘,则需要将以下代码添加到App.xaml的ResourceDictionary
。如果你想在多个地方使用它,但只在一个ContentPage
中,你会想把它添加到ContentPage
的ResourceDictionary
。否则,您可以直接将其添加到您的Entry
。
还可以在这里查看可用的KeyboardFlag
值。我只是使用None
下面。
如果添加到ResourceDictionary
:
<ContentPage.Resources>
<ResourceDictionary>
<Keyboard x:Key="NoCapitalizationKeyboard"
x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>None</KeyboardFlags>
</x:Arguments>
</Keyboard>
</ResourceDictionary>
</ContentPage.Resources>
<Entry Keyboard="{StaticResource NoCapitalizationKeyboard}" />
或直接到Entry
:
<Entry>
<Entry.Keyboard>
<Keyboard x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>None</KeyboardFlags>
</x:Arguments>
</Keyboard>
</Entry.Keyboard>
</Entry>
有点晚了,但现在有一种简单的方法可以获得一个普通的键盘,没有标志:
<Entry
FontSize="Small"
Keyboard="Plain"
Text="Text"/>
文档。
您可以设置Keyboard="Text"
- Default
键盘执行大写
还要查看可以应用的其他键盘设置。这些允许你切换建议和其他东西。
或者,我建议你为UITextField
创建一个简单的效果,并使用本地iOS api来设置你需要的标志(AutocapitalizationType = UITextAutocapitalizationType.None;
)。
我们也有关于如何创建自定义渲染器来实现目标的文档,但由于引入了效果,它似乎有点过头了。
可以使用不大写的条目,例如"username"。为此,您只需使用
<Entry Keyboard="Email" Placeholder="Username"/>
最后你会得到一个非自动大写的条目,如果需要的话,你也可以把它用作电子邮件文本。
无论在Android的模拟器还是设备中,您都会发现当xaml property在
如果您使用屏幕上的键盘,即使在模拟器中(因为您通常会在99%的情况下使用手机或平板电脑,这不是问题)。设置键盘="Plain"上面的<Entry标签解决了这个问题。>
这也发生在密码输入对话框中。很烦人,但看起来还没有人把它标记为bug。