EditText 停止失去对 Enter 键的焦点

Rid*_*ari 1 android listview android-layout android-edittext

当我按 Enter 键时 EditText 失去焦点

并且 Listview 的第一个项目突出显示,但没有发生任何事件
1) 没有发现 ListView 焦点更改
2) 没有发生 ItemCLick 事件并且在滚动 ListView 上突出显示的项目消失了

如何防止在按 Enter 键时失去 EditText 焦点并停止突出显示

下面是我的 xml 和 Java 代码

<EditText
android:id="@+id/et_scanitemcode"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="60"
android:background="@drawable/edittext_background"
android:gravity="right|center_vertical"
android:maxLines="1"
android:paddingLeft="5dp"
android:textColor="@drawable/edittext_color_background" />


<ListView
android:id="@+id/lst_salesScannedItems"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

et_scanitemcode.setOnKeyListener(new EditText.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                Log.i("==>",""+KeyEvent.keyCodeToString(event.getAction()));
                Log.i("==>",""+keyCode);
                // If the event is a key-down event on the "enter" button
                //This is the filter


                if (event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
                    // Perform action on key press
                    String scanItemCode = et_scanitemcode.getText().toString().trim();


                    return true;
                }
                return false;
            }
        });
Run Code Online (Sandbox Code Playgroud)

小智 5

发生的情况是,在 ACTION_DOWN 之后,触发 KeyEvent.ACTION_UP 导致控件失去焦点。您必须处理这两个事件。

这对我有用

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_ENTER) {
        if (event.getAction() == KeyEvent.ACTION_DOWN){
            //your code here
        }
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)