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

我的EditText小部件在JellyBean之前运行良好。它将自动换行,直到用户按下“完成”(返回)键。然后,它将使用OnEditorActionListener捕获事件并进行相应处理。我尝试使用以下XML属性更改设置的多种变体无济于事:

  • singleLined
  • scroll水平
  • inputType
  • imeOptions
  • 线

  • 我只能在不触发onEditorAction事件的情况下进行换行,或者在onEditorAction事件触发的情况下不进行换行。如何为JellyBean换行并同时处理软键盘的Enter键?

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

    更新2:设法保留了运行JellyBean 4.1.1的Asus Transformer。工作良好。那么,也许这是设备特定的错误?我的另一个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>
    

    最佳答案

    自己提供一个ID到您的“提交/执行”按钮

    Activity 中:

    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>
    

    10-08 08:14