如何将键盘设置为数字键盘,我可以在Xamarin.Forms中输入负数吗?

时间:2017-10-17 03:46:44

标签: xamarin xamarin.forms xamarin.android

需求是显示键盘的默认数量,可以输入如下的负数:

enter image description here

但是没有办法以这种方式设置默认值。

如果设置此键盘,则无法输入负数,单击减号无响应。

纯数字小键盘,但不能输入负数

enter image description here

有没有解决方案?

1 个答案:

答案 0 :(得分:1)

您必须为NumericEntry创建自己的控件,如:

public class NumericTextBox : Entry
{
    public NumericTextBox()
    {
        this.Keyboard = Keyboard.Numeric;
    }
}

然后,在您的Android项目中,创建自定义渲染器:

[assembly: ExportRenderer(typeof(NumericTextBox), typeof(CustomNumericTextboxRenderer))]

namespace xxx.Droid.Renderers
{
    public class CustomNumericTextboxRenderer : EntryRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);

            var native = Control as EditText;

            native.InputType = Android.Text.InputTypes.ClassNumber | Android.Text.InputTypes.NumberFlagSigned | Android.Text.InputTypes.NumberFlagDecimal;
        }
    }
}

这已经过测试并适用于Droid设备。它允许输入带小数点的负值/正值。它正确禁止输入错误的十进制值。