6

我遇到了相当大的难题,无法找到解决方案。显然 JellyBean 改变了 IME 操作的处理方式。我发现许多网站提供了一个确实有效但仅适用于单行的解决方案EditTexts。示例:Stackoverflow:onEditorAction

EditText在 JellyBean 之前,我的小部件运行良好。它会正确地自动换行,直到用户点击“完成”(返回)键。然后它会用OnEditorActionListener和 相应地处理事件。我尝试了多种使用以下 XML 属性更改设置的变体,但均无济于事:

  • 单衬里
  • 水平滚动
  • 输入类型
  • imeOptions
  • 线条

我只能在没有触发 onEditorAction 事件或没有触发 onEditorAction 事件的情况下获得自动换行。如何为 JellyBean 同时获取自动换行和处理软键盘输入键?

更新 1:包括请求的代码。请注意,这是它现在的状态,适用于除 JellyBean 之外的所有平台。正如我之前所说,尝试了多种不同的 XML 设置均无济于事。

更新 2:设法获得了运行 JellyBean 4.1.1 的华硕变压器。工作正常。所以也许这是一个特定于设备的错误?我的另一个 JellyBean 设备是运行 4.1.2 的 Nexus 7。任何人都可以用其他设备验证这一点吗?

代码:

private class OnMyEditorActionListener implements OnEditorActionListener {
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_GO) {
            doSomething();
            return true;
        }
        return false;
    }
}
<EditText
    android:id="@+id/editbox_box_et"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@null"
    android:gravity="top|center_horizontal"
    android:imeOptions="actionGo"
    android:inputType="textMultiLine|textNoSuggestions"
    android:padding="@dimen/spacing_half"
    android:textSize="24sp" >
</EditText>
4

5 回答 5

5

为您的提交/执行按钮提供您自己的 ID

在活动中

private class OnMyEditorActionListener implements OnEditorActionListener {
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == R.id.your_new_ID || actionId == EditorInfo.IME_Null) {
            doSomething();
            return true;
        }
        return false;
    }
}

在 xml 中

<EditText
    android:id="@+id/editbox_box_et"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@null"
    android:gravity="top|center_horizontal"
    android:inputType="textMultiLine|textNoSuggestions"
    android:padding="@dimen/spacing_half"
    android:textSize="24sp" 
    android:imeActionId="@+id/your_new_ID"
    android:imeActionLabel="Go"> </EditText>
于 2014-08-07T09:44:16.470 回答
2

尝试以下操作:

android:inputType="text"
android:imeOptions="actionNone"

并在 imeOptions xml 文件中查看不同的自动换行选项

于 2012-11-15T11:57:51.560 回答
1

经过大量测试后,我确定这是 Nexus 7 特有的错误,我无法通过任何代码来解决它。有趣的是,如果我从 Google Play 下载不同的键盘,那么代码实际上可以工作!

于 2012-11-16T12:59:40.510 回答
0

尝试添加android:imeActionId具有整数值的属性(actionGo 为 2)。http://developer.android.com/reference/android/widget/TextView.html#attr_android:imeOptions

于 2012-11-12T05:29:31.097 回答
0

我在为 Jelly Bean 4.1.2 触发事件时遇到问题。添加输入类型对我有帮助。

android:imeOptions="actionGo"
android:inputType="text"
于 2012-11-12T22:36:45.893 回答