【问题标题】:Not able to use decimals with Numeric Keyboard (Xamarin Forms on Android)无法通过数字键盘使用小数(Android 上的 Xamarin 表单)
【发布时间】:2020-09-17 23:10:14
【问题描述】:

我尝试了几个论坛上给出的几种解决方案,并在 Xamarin 论坛上询问过,但都没有结果:我想在 Xamarin 表单中创建一个条目,用户可以在其中添加十进制数。问题是我的数字键盘禁用了逗号。

我可以使用自定义渲染器添加一个点,但由于我住在荷兰,我还需要选择使用逗号。我在三星 Galaxy S10 上进行了测试,但没有明显的原因无法正常工作。

我创建了一个演示供您查看,但由于我无法在此处上传任何文件,您可以在我在 Xamarin 论坛 (demo file) 上创建的线程上找到它。也许这里有人可以弄清楚我需要做什么..

提前致谢。

【问题讨论】:

    标签: xamarin.forms


    【解决方案1】:

    要在 Xamarin.Forms for Android 中使用逗号键,请尝试以下代码。

    public class EntryNumericKeyboardRenderer : EntryRenderer
    {
        public EntryNumericKeyboardRenderer(Context context) : base(context)
        {
        }
        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);
    
            if (Control != null)
            {
                this.Control.KeyListener = DigitsKeyListener.GetInstance("1234567890,.");
            }
        }
    }
    

    【讨论】:

    • 感谢您的回复。这不起作用..我可以输入点,但不能输入逗号。
    • 您是否在另一台设备上测试过代码?该问题可能只出现在三星设备上,这里有一个类似的问题案例您可以参考:forums.xamarin.com/discussion/171091/…
    • @GaneshGebhard 两种解决方案都可以正常工作。您只需将输入解析为Culture Invariant,用点替换逗号即可。
    • 这对我来说应该是正确的答案。
    【解决方案2】:

    尝试任何其他制造商,Jarvan Zhang 的答案都会奏效。但是三星数字键盘总是显示一个点,没有办法改变它。互联网上有数百人想要同样的东西,不仅对于 Xamarin,而且对于原生 android(例如Samsung Galaxy Note II - Comma as Numeric Keyboard Decimal Separator)。 我最终在 TextChanged 事件中用逗号替换了每个点(在 Xamarin.Forms 代码中)...

    Text = Text.Replace(".", ",")
    

    如果三星数字键盘在点上方显示减号,那是因为它已签名。您可以使用自定义渲染器摆脱它:

    if (Android.OS.Build.Manufacturer.Equals("Samsung", StringComparison.CurrentCultureIgnoreCase))
            {
                Control.InputType = InputTypes.ClassNumber | InputTypes.NumberFlagDecimal;
            }
            else
            {
                Control.KeyListener = DigitsKeyListener.GetInstance("1234567890,");
            }
    

    唯一的其他选择是安装另一个键盘,请参阅上面链接的 SO 问题...

    编辑:在尝试寻找其他失败尝试的好例子时(大声笑),我发现了这个公认的答案: https://forums.xamarin.com/discussion/175286/samsung-numeric-keyboard-makes-me-cry 我的家庭办公室没有三星设备,所以无法测试,但不妨试一试。

    【讨论】:

      猜你喜欢
      • 2013-01-30
      • 1970-01-01
      • 2012-10-26
      • 2019-11-19
      • 2023-03-29
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      相关资源
      最近更新 更多