【问题标题】:Show the softkeyboard with only alphanumeric keys?只显示字母数字键的软键盘?
【发布时间】:2014-04-29 01:49:17
【问题描述】:

有可能吗?

我想展示带有基本字母和数字按钮的键盘,没有设置键或笑脸键或类似的东西,只有字母、数字、空格、完成和 shift 等。

我发誓几个月前我碰巧看到一篇关于如何在这种模式下设置键盘的文章,但我现在找不到了!

我查看了android:inputTypeandroid:windowSoftInputMode 的可能值,但看不到任何有用的信息。我错过了什么?

更新

该软件设计为在特定平板电脑上运行,客户随软件一起购买,我们控制其上安装的内容。他们目前使用标准键盘运行 Cyanogen 4.2.2。

【问题讨论】:

  • 即便如此,除了编写自己的自定义键盘应用程序之外,您无能为力。
  • 是的,这就是我认为我必须要做的事情,但我确信我看到了某种“缩减”模式,开发人员可以在屏幕空间紧张时使用。也许是我梦到了
  • 好吧,也许一个键盘应用程序支持该功能,如果您再次找到该文章,您可以找到该特定应用程序并运送预装了该键盘的平板电脑。但除此之外,您将无法编写自己的键盘应用程序。
  • 我编辑了一个教程链接,用于在我的答案中编写自定义键盘。如果我在接下来的几个小时里找到时间,我会为你总结一下。
  • 如果您没有时间/预算来编写自定义键盘,也许您应该考虑在您的应用程序中模拟它。包含您需要的按钮的片段,您将其放置在屏幕底部,View.GONE 作为可见性,并在用户需要时设置为 View.VISIBLE。同时可以隐藏普通键盘以防止其出现。

标签: android android-softkeyboard


【解决方案1】:

我认为,实现您想要的唯一方法是创建一个带有自定义 KeyboardView 类的自定义软键盘
这是一个教程:Custom keyboard 并查看这个 SO 问题:Android app specific soft keyboard 特别是 this answer,它链接到一个开源项目。

【讨论】:

  • @Filo - 我保证不是我!
  • 最后这就是我实现的,尽管花费的时间比我希望的要长得多,但它让我能够满足要求。谢谢。
【解决方案2】:

没有通用的解决方案,您必须记住没有通用键盘,即使有人可以从 Play 商店下载不同的键盘应用程序。三星、HTC、Nexus 都有自己的键盘,许多 OEM 甚至为不同的手机提供不同的键盘。

所以除了设置:

android:inputType="number"

在您的 EditText 上,您无能为力。每个键盘都以自己的方式处理这个问题。

编辑:

如果您控制安装的软件,则可以编写自定义键盘应用程序或搜索支持所需功能且可随平板电脑提供的键盘应用程序。但除此之外,你无能为力。

编辑 2:

这里是一个教程链接,该教程解释了如何编写自定义键盘:link

编辑 3:

您始终可以选择模拟键盘。在屏幕底部放置一个包含您需要的按钮的片段,可见性为View.GONE,并在用户需要时将其设置为View.VISIBLE。您可以使用以下代码阻止普通键盘出现:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

实际上,我为几个月前编写的应用程序做了类似的事情。当您将淡入淡出和平移动画应用于片段并将其设置为View.VISIBLE 时,它实际上看起来相当不错!

【讨论】:

  • 为什么我的投票被否决了?到目前为止,我是唯一一个正确阅读问题的人......
  • @XaverKapeller 不是我!但也许这个问题还不够清楚。我想要数字、字母,但尽可能多地删除其他字母。它的设置键给我带来了麻烦
【解决方案3】:

你有没有试过android:inputType="textVisiblePassword"

您也可以以编程方式执行此操作,而无需更改 EditText 的任何其他方面:

editText.setRawInputType(InputType.TYPE_CLASS_TEXT | 
        InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)

它会显示如下内容:

【讨论】:

  • 如何以编程方式实现这一目标?
  • @Po10cio 我猜是editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)
  • 它节省了我的时间
  • 这简直太棒了。感谢您的回答!
  • 这也改变了 EditText 提示的字体。有没有办法避免这种情况?
猜你喜欢
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多