Android EditText,减去转换为点事件,虽然inputType ="number | numberSigned | numberDecimal"

Adr*_*ian 9 android android-softkeyboard android-edittext android-inputtype

我有一个用户拥有Android VS890 4GAndroid 4.4.2.显然每次当他试图在我的纬度/经度坐标输入中插入一个减号时EditText,他的负值会转换成一个点.如果他把负面坐标粘贴到那里,他会遇到同样的问题EditText.

        <EditText
        android:id="@+id/long_degrees_et_id"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:inputType="number|numberSigned|numberDecimal" >
Run Code Online (Sandbox Code Playgroud)

问题是他只在使用软键盘时遇到这种情况.在硬键盘上它按预期工作.

这是在尝试输入坐标时手机的屏幕截图:

键盘布局图像

我知道这是一个inputType问题,因为我给了他一个没有的构建,inputType并且它很好(除了他的键盘没有打开数字类型).

他是唯一一个报告这个问题的人,我无法重现它.我真的想将输入类型保持为数字,以便键盘自动打开数字.有关如何解决此问题的任何想法?

jav*_*jon 5

这个布局元素

<EditText
    ...
    android:inputType="number|numberDecimal|numberSigned"
    ...
/>
Run Code Online (Sandbox Code Playgroud)

应提供带有小数和符号条目的数字键盘视图.在我的大多数设备和模拟器上''.并且' - '在单独的按钮上,在三星Galaxy S5/SM-G900P/Android 4.4.2上都是'.' 并且' - '奇怪地出现在同一个按钮上(如LG设备上面的照片所示,也是4.4.2).它出现在某些设备上,弹出式键盘是snafu,因为它将符号和十进制放在同一个按钮上.

但是,在该字段的第一个字符上,如果双击(.-)按钮,将输入一个符号而不是小数. 单击即可输入小数.困难在于将一些文本用于向用户解释该技巧.

也许这个设计可能是为了节省按钮空间而有目的地完成的.(嗯,我们不是只是降落在一颗小行星上吗?)

使用此组合不会像您希望的那样工作:

android:inputType="number|numberSigned|numberDecimal"
android:digits="0123456789.-"
Run Code Online (Sandbox Code Playgroud)

此外,不要使用android:numeric ="decimal",因为它是递减的,也不解决问题.

@Adrian对N/SW/E的建议将是一个很好的补充,但是,不是替代,因为仍然需要 - 符号.有些用户认为罗盘有所上升,有些认为 - /+.

一种解决方案是创建自定义输入法编辑器(IME). 这是一个自定义KeyboardView示例.

特定于纬度和经度坐标的输入:我将转到自定义IME/KeyboardView路线并具有特定的纬度/长度输入处理,因为每个字段也有范围值.