【问题标题】:Phone-like only numbers soft-keyboard仅类似于电话的数字软键盘
【发布时间】:2012-08-22 10:44:14
【问题描述】:

我想要一个类似手机的软键盘,只允许输入数字。

我可以使用 inputType="number" 实现“只有数字”(默认为软键盘,但只允许输入数字)和 inputType="phone" 的类似电话的样式。但是当像数字|电话一样放在一起时,即使样式是类似电话的,软键盘也允许使用数字以外的符号。

我想要类似电话的样式,因为数字按钮更大,更容易按下,我只需要输入数字。

除了创建自定义键盘之外还有什么建议吗?

【问题讨论】:

    标签: android android-widget user-input android-edittext android-softkeyboard


    【解决方案1】:

    直接设置输入类型的时候可以强制键盘为数字,不知道有没有多余的按键

    EditText t = (EditText) findViewById(R.id.edittext1);
    
    t.setRawInputType(Configuration.KEYBOARD_12KEY);
    

    t.setRawInputType(InputType.TYPE_CLASS_PHONE);
    

    我很早以前就使用过第一个,它确实有效,但不确定最近的 Android 版本。

    但是,您不能影响布局。他们的键盘由当前执行键盘的应用程序提供,它可以做任何它想做的事情。甚至像给你 2 个按钮让用户输入摩尔斯电码之类的东西,比如https://play.google.com/store/apps/details?id=org.emergent.android.morseime

    如果你得到的键盘不是你想要的,你必须自己实现 - 一个相对简单的布局,有 10 个按钮并没有那么多工作。

    【讨论】:

    • 感谢您的回答。使用 inputType="number" 的两种方式都按预期工作得非常好。这就是我想要的和正确的答案。问题:我看不出使用一种方法或另一种方法(至少在我的 Android 2.2.1 手机上)之间有任何真正的区别(至少在视觉上和输入行为上)。两者之间应该有任何区别还是它们只是同义词?
    • 两者都只是ints,值为3。所以没有区别。不确定哪个是官方支持的版本。
    • setRawInputType 和来自InputType 的那个都存在,因为 API 级别 3 和 setInputType 明确指定 InputType 作为源,所以我想这种组合更有意义。
    猜你喜欢
    • 2015-08-16
    • 2011-03-14
    • 2017-07-26
    • 1970-01-01
    • 2012-03-31
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多