仅类似于电话的数字软键盘
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 手机上)之间有任何真正的区别(至少在视觉上和输入行为上)。两者之间应该有任何区别还是它们只是同义词? 两者都只是int
s,值为3
。所以没有区别。不确定哪个是官方支持的版本。
setRawInputType
和来自InputType
的那个都存在,因为 API 级别 3 和 setInputType
明确指定 InputType
作为源,所以我想这种组合更有意义。以上是关于仅类似于电话的数字软键盘的主要内容,如果未能解决你的问题,请参考以下文章