1

我正在实现一个要求用户进行测量的表单。根据区域设置,用户将输入米或英尺/英寸。

天真地,我当前的实现要求仅使用英尺来使用小数点。例如,2.5 英尺等于 2 英尺 6 英寸,这在我的理解中是相当误导的。我不在一个没有采用公制的国家,所以当时对我来说并不明显。

我看到了一些可能性和问题:

  • 显示两个EditText字段,一个为英尺,一个为英寸。这使得布局设计变得困难,因为我还允许用户输入米,这将只需要一个EditText. 一种可能性是在运行时将其隐藏。
  • 使用 one EditText,我似乎无法找到一个android:inputType允许数字输入加上双素数和素数或双引号和撇号的方法。例如 3' 5" 或 3' 5"。这意味着EditText必须使用标准字母键盘,这对用户造成了轻微的阻碍。
  • 此外,对于 one EditText,我很高兴(并且已经这样做了,只是一个没有英寸的米和英尺的条目),EditText在用户失去焦点后添加后缀,并在再次获得焦点时删除后缀。这确实使简单输入字段的代码更加复杂。

还有其他选择吗?

4

3 回答 3

2

发布后不久我才意识到:

为什么不创建一个NumberPicker弹出窗口或者Spinner当用户关注EditText. 这只会出现在英制测量中。

于 2012-04-24T22:13:57.373 回答
1

我在想,您可以使用TextWatcher来检查用户何时键入空格。'发生这种情况时,在末尾 添加后缀并让用户键入英寸。

或者,每次用户键入时,始终将后缀附加到末尾并将其向下推到光标之外。当用户按下空格键时,将光标跳过并"超出它。

从用户流的角度来看,它可能会也可能不会很乱(我没有尝试或看到过),但它可以解决一些问题。您可以继续强制用户只输入数字值,以保持数字键盘向上而不是字母。他们不必更换键盘或长按来输入单个字符。它还向用户显示他/她键入时的意图。

于 2012-04-24T22:23:46.530 回答
0
 edittext.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getKeyCode() != KeyEvent.KEYCODE_DEL) {
                String input = edittext.getText().toString();
                if (input.length() == 1) {
                    input = input + "'";
                    edittext.setText(input);
                    int pos = edittext.getText().length();
                    edittext.setSelection(pos);
                }
            }
            return false;
        }
    });
于 2018-11-12T18:06:05.010 回答