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

问题描述:

的需求,显示键盘的默认号码可以进入这样的负数:如何将键盘设置为数字键盘,并且可以在Xamarin.Forms中输入负数?

enter image description here

但是没有办法来设置这样的默认。

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

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

enter image description here

有没有什么解决办法吗?

你必须创建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的设备工作。它允许输入带有小数点的负值/正值。它适当地禁止输入错误的十进制值。

+0

@Jackson,你可以在Wilson Vargas的例子中用'Entry'替换'TextBox'。 –

+0

@York Shen - MSFT非常感谢你! – Jackson