输入内容后编辑文本失去焦点
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 侦听器。
我正在列表视图的适配器 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 侦听器。