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

时间:2014-09-14 11:25:08

标签: android android-edittext android-softkeyboard android-inputtype

我的用户拥有 LG VS890 4G Android 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" >

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

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

keyboard layout image

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

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

2 个答案:

答案 0 :(得分:5)

此布局元素

<EditText
    ...
    android:inputType="number|numberDecimal|numberSigned"
    ...
/>

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

但是,在字段的第一个字符上,如果双击(.-)按钮,将输入一个符号而不是小数。单击将输入一个小数。困难在于为您的用户解释这个技巧。

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

使用此组合无法正常工作:

android:inputType="number|numberSigned|numberDecimal"
android:digits="0123456789.-"

另外,不要使用android:numeric =“decimal”,因为它会递减,也不会解决问题。

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

一种解决方案是创建自定义input method editor (IME).这是example custom KeyboardView

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

答案 1 :(得分:0)

我的另一个用户遇到了同样的问题,他发现他需要双击点/点键才能保持短划线可见。对于可能遇到同样问题的人,我提到这一点。