setOnEditorActionListener 不适用于软键盘提交按钮,但适用于笔记本电脑的 Enter 键?

2023-11-22

有人可以提供一个解决方案来获得软键盘的工作侦听器吗DONE按钮,和/或解释我当前的方法做错了什么?

我的 Xml 和 Java 设置

  • 在 Xml 中,有一个简单的 EditText 设置为android:imeOptions="actionDone"
  • 在Java中,它只有一个基本的TextView.OnEditorActionListener宣布

So setOnEditorActionListener()当点击设备软键盘提交(又名DONE) 按钮 - 下面的绿色箭头按钮;仅清除 EditText 字段

enter image description here

但是当单击计算机时,该侦听器确实会被调用Enter key (通过亚行附).

我认为它应该适用于这两个按钮..这是不对的吗?

XML 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.demo.MainActivity">

    <EditText
        android:id="@+id/comment_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:maxLines="1"
        android:imeOptions="actionDone"
        />    
</LinearLayout>

Java 活动文件:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ((EditText) findViewById(R.id.comment_text)).setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                int i = 5; // added this to set a break point
                return false;
            }
        });
    }
}

解决方案更新

感谢 @Apoorv Mehrotra 的回答,事实证明我的 EditText 缺少这一属性,以便识别软键盘事件。将其添加到上面的 Xml 中即可解决问题。

android:inputType="text"


我遇到了同样的问题,对我来说,添加android:singleLine="true"在 EditText 中做到了这一点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setOnEditorActionListener 不适用于软键盘提交按钮,但适用于笔记本电脑的 Enter 键? 的相关文章

随机推荐