【问题标题】:How to make editText insert some look如何让editText插入一些外观
【发布时间】:2013-07-22 20:51:31
【问题描述】:

所以我不想拥有一个可以自动执行某些操作的 editText。

第一件事是它应该只允许插入数字。

第二个也是我认为更难的想法是,当用户插入例如 5 个数字时会添加一些符号。例如我写:

    12345

然后程序应该添加一个符号

    12345-

现在我可以输入更多了。

    12345-6789

我正在用谷歌搜索 EditText 中的预定义文本,但我发现没有任何用处...

【问题讨论】:

  • 您需要一个输入过滤器。请参阅[在 Android 中使用 EditText Widget 的屏蔽输入][1] [1]:stackoverflow.com/questions/2912375/…
  • 菲利普这就是我一直在寻找的东西,我希望我现在能做到......

标签: android android-edittext


【解决方案1】:

对于1)在xml中添加android:inputType="number"

对于 2) 您可以有两个不同的编辑文本,由 -android:maxLength="5" 在 xml 之后加入值

虽然我确信一定有更好的方法来做 (2)

【讨论】:

  • Tnx 对于 (2) 的想法,我为自己找到了 (1),我正在偷偷寻找 (2) 但没有任何聪明的想法出现......
【解决方案2】:

对于 2) 你不能检查onKeyDown (int keyCode, KeyEvent event) 吗?

因此,当用户按下按钮时,您可以使用此函数计算编辑文本的长度,如果长度等于 5,则插入所需的字符。

请注意,当您将编辑文本定义为仅数字时,我没有尝试在编辑文本中插入“-”符号。

【讨论】:

  • 我想我可以,但这是表单中的一个字段,所以很难知道用户在哪个 editText 中输入...
  • 检查此link,尤其是 Chiara 的答案,用于格式化文本。或者这个link,也许他们可以帮助你
【解决方案3】:

所以我找到了解决菲利普评论的方法。你必须使用过滤器这样做。我的代码现在是这样的:

   InputFilter filter = new InputFilter() {

        @Override
        public CharSequence filter(CharSequence source, int start, int end,
                Spanned dest, int dstart, int dend) {

            if(end==0){
                if(is_minus){jis_minus=false;}
                else number--;
            }
            for (int i = start; i < end; i++) { 

                if (!Character.isDigit(source.charAt(i))) { 
                    return "";
                } 
                else{
                    number++;
                }
                if(number==5)
                    {
                    is_minus=true;
                    return (source.charAt(i)+"-");
                    }

        } 
        return null; 
        }
};

之后,您只需将过滤器附加到您想要的文本框...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-19
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多