拥有一个私有的InputMethod

时间:2014-01-29 17:09:21

标签: android keyboard

我现在做一些研究。我和我们的一位设计师谈过了一个模仿Numberpad的特殊登录布局。因为看起来不像Android支持这样的布局对我来说似乎是合理的。我在单个EditText上播放了N5 android:inputType属性,以便更好地了解可以自定义的内容:

<EditText
    android:text="1234"
    android:hint="enter your pin code"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
        android:inputType="number"
        android:id="@+id/editText2"/>

这导致像这样的键盘:

enter image description here

当我点击,或 - 键没有任何反应,为什么?我也试过了

android:inputType="numberSigned"

android:inputType="numberDecimal"

我还是不能用那把钥匙!为什么他们会被展示?

我想要一个只显示01234567890 BACKBUTTON OK的键盘

如果我正确,则无法使用InputType属性进行存档。所以我可能应该创建某种自定义键盘布局。

除此之外,我还在考虑更多Android Way。所以我自己从未写过自定义键盘,因为我从来没有这样做过。

我阅读updating-applications-for-on-screen以了解其工作原理。但问题 左:

我可以定义一个对于特定应用程序而言始终是私有的输入吗?

如果是的话,怎么办呢?

对于一个非常小的用例,是否值得努力?

如果我查看Native Call APP,可以使用自定义布局来更好地控制外观。我理解为什么他们这样做。无论如何你对此有何看法?有些用例我觉得使用简单的东西......让我们说gridlayout有一个键盘。

2 个答案:

答案 0 :(得分:1)

好的,而不是使用它。我找到了更好的方法,对我有用。我使用KeyboardView来做我需要的事情。我更适合我的需求,因为我需要一些特殊的键盘,无论如何都可以成为布局的一部分。首先我认为这对用户体验不利,但在与设计人员交谈后,在这种特殊情况下使用它是有道理的。因为我们真的可以很容易地定义哪些键需要显示,所以I18N在这种方法下更适合自定义组件。

答案 1 :(得分:0)

不同的IME根据inputType显示不同的布局,在这种情况下,LatinIME(或Google键盘)使用相同的布局处理数字/ numberSigned / numberDecimal但阻止某些键。如果用户安装另一个键盘,则用户可能会或可能看不到不同inputTypes的不同布局。

至于你是否可以创建一个特定于应用程序的IME,你可以通过定义自己的视图/布局和处理关键事件来像AOSP拨号器一样。但是如果你想像一个完整的IME(通过扩展InputMethodService类,在AndroidManifest中为android.view.InputMethod添加意图过滤器等),那么IME变为公共,用户需要通过系统语言设置UI启用它。