输入内容后编辑文本失去焦点

Edit text loosing focus after typing something

我正在列表视图的适配器 class 中扩充编辑文本。 View 看起来很酷,多个编辑文本正确显示,但是当我专注于编辑文本时,或者如果我尝试键入它失去焦点的内容,我尝试添加侦听器、更改清单文件,但对我没有任何作用。

以下代码对我不起作用

@Override
 public View getChildView(int position, int i1, boolean b, View view, 
 ViewGroup viewGroup) {
 EditText comment = view.findViewById(R.id.txtRecordComment);

 comment.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                    if (lastFocussedPosition == -1 || lastFocussedPosition == position) {
                        lastFocussedPosition = position;
                        edittext.requestFocus();
                    }
                }
            }, 200);

        } else {
            lastFocussedPosition = -1;
        }
    }
});

   return view;
}

请帮我解决这个问题

在 Android 清单文件中添加以下代码

<activity android:name=".ActivityName"
      android:label="@string/app_name"
      android:windowSoftInputMode="adjustPan">

希望这会奏效

由于您使用的是 ListView,因此您当前的代码实现必然会发生这种情况。

你必须记住,如果你的 EditText 在 ListView 中,每次按下键都会导致编辑文本丢失并获得焦点,因为所有视图都被重绘,所以代表任何行的编辑文本用于be focused 现在是一个完全不同的对象。

要获得预期的行为,请在您的适配器中声明一个变量:int focusedRow。在适配器的 getView 方法中,向 EditText 添加一个 onFocusChanged 侦听器,当该编辑文本获得焦点时,设置 focusedRow = 焦点 EditText 恰好位于的任何行。

同时将 currentlyFocusedRow 中的任何编辑文本设置为焦点。

更新:

如果您有多个 EditText,请为每个编辑文本添加一个 onFocusChanged 侦听器。