有没有办法在Xamarin表单上禁用自动资本化'XAML

本文关键字:资本化 XAML Xamarin 表单 有没有 | 更新日期: 2023-09-27 18:12:32

我刚刚开始在Xamarin工作,我正在写一个针对iOS和Android的应用程序。我试着把我所有的UI设计保持在它们之间的公共库中,我开始发现界限有点模糊。我目前的要求是禁用XAML中"Entry"标记对象的自动资本化。这是可以通过标记来完成的吗?我找不到任何支持这种行为的属性。如果不是,我该怎么做呢?

有没有办法在Xamarin表单上禁用自动资本化'XAML

如果您计划在许多页面中使用此键盘,则需要将以下代码添加到App.xaml的ResourceDictionary。如果你想在多个地方使用它,但只在一个ContentPage中,你会想把它添加到ContentPageResourceDictionary。否则,您可以直接将其添加到您的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。