所以我只允许在字段中键入数字。
配置TextField
:
keyboardOptions = KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Number
)
但它仍然允许我键入小数点分隔符(逗号和点)
所以我看不出KeyboardType.Number
和KeyboardType.Decimal
之间有什么区别,它们的工作原理完全一样。
数量
@Stable
public final val Number: KeyboardType
A keyboard type used to request an IME that is capable of inputting digits. IME may provide inputs other than digits but it is not guaranteed.
十进制
@Stable
public final val Decimal: KeyboardType
A keyboard type used to request an IME that is capable of inputting decimals. IME should explicitly provide a decimal separator as input, which is not assured by KeyboardType.Number.
为什么会这样呢?
2条答案
按热度按时间1szpjjfi1#
如issue所述:
大多数键盘在键盘类型设置为Number时会显示小数点分隔符,但也有可能是键盘在inputType中期望
TYPE_NUMBER_FLAG_DECIMAL
标志实际显示小数点分隔符键。此更改添加了一个名为Decimal的新KeyboardType,它显式设置所需的标志。对于大多数键盘和OEM,Number和Decimal的行为基本相同。
您可以使用正则表达式模式限制允许的字符。
比如:
pgvzfuti2#
使用
KeyboardType.NumberPassword
只向用户显示数字,仅用于输入0到9之间的数字,非常方便输入没有小数点的金额。这可以防止显示用户不允许输入的逗号或破折号。只有当您希望知道这是防止04或001等条目的确切数量时,才需要使用模式。在这种情况下,正则表达式应该是
^[1-9]\d*$
https://stackoverflow.com/a/5661603/5457853