【问题标题】:setOnEditorActionListener() method not working with inputtype textMultiline along with enter button in keyboardsetOnEditorActionListener() 方法不适用于 inputtype textMultiline 以及键盘中的输入按钮
【发布时间】:2019-09-04 20:41:56
【问题描述】:

我遇到了一个问题,当我在 xml 中使用 inputtype 作为 textmultiline 并且在 edittext 中使用 imeiOptions 作为 KEYCODE_ENTER 时,我的 setOnEditorActionListener 不起作用,但是如果我将 inputtype 更改为 text,那么它工作正常。我无法理解为什么这不适用于 textMultiline。 我在 xml 中定义的 Edittext 是-:

  <EditText
            android:id="@+id/etremarks"
            android:layout_width="match_parent"
            android:layout_height="@dimen/_200sdp"
            android:background="@drawable/shape_edittext_pink_border"
            android:fontFamily="@font/share"
            android:gravity="top"
            android:hint="Enter Message"
            android:inputType="textMultiLine"
            android:padding="5dp"
            android:textColor="#000000" />


and my code for edittext in java file is-:


 etremarks.addTextChangedListener(mTextEditorWatcher);
        etremarks.setImeOptions(KeyEvent.KEYCODE_ENTER);

        etremarks.setOnEditorActionListener(new TextView.OnEditorActionListener()
        {
            @Override
            public boolean onEditorAction(TextView v, int actionId,
                                          KeyEvent event)
            {
                boolean handled = false;
                if (actionId == KeyEvent.KEYCODE_ENTER)
                {
                    // Handle pressing "Enter" key here
                    Toast.makeText(SendBulkSmsToClients.this, etremarks.getText(), Toast.LENGTH_SHORT).show();

                    handled = true;
                }
                return handled;
            }
        });

请分享您对这个问题的宝贵意见

谢谢

【问题讨论】:

  • 也许这对你有帮助stackoverflow.com/questions/2986387/…
  • 在上面的例子中不清楚。,基本上我需要的是当用户在软键盘中按下回车按钮时,那时我必须向编辑文本添加一些编码参数。所以我需要编辑器监听器但是它不适用于多行和 keycode.enter。

标签: java android


【解决方案1】:

使用

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
editText.setRawInputType(InputType.TYPE_CLASS_TEXT);

在 XML 中:

android:inputType="textMultiLine"

来源:Multi-line EditText with Done action button

【讨论】:

    【解决方案2】:

    添加这一行android:imeOptions="actionSend"并在代码中,如下处理

     @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            boolean handled = false;
            if (actionId == EditorInfo.IME_ACTION_SEND) {
                sendMessage();
                handled = true;
            }
            return handled;
        }
    

    【讨论】:

    • 我尝试了actionSend,但结果相同,仍然没有触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多