仅类似于电话的数字软键盘

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案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 作为源,所以我想这种组合更有意义。

以上是关于仅类似于电话的数字软键盘的主要内容,如果未能解决你的问题,请参考以下文章

联想手机A65打电话时不显示软键盘怎么设置出来?

HTML Mobile - 强制软键盘隐藏

仅在电话的 AlertDialog 中未显示软键盘

如何为特定活动禁用 Android 软键盘?

登录界面软键盘遮挡登入按钮 空间

安卓手机怎么设置默认数字软键盘