Android ListView的onItemClick的PopupWindow中的EditText未被关注
我有一个Android ListView的onItemClick的PopupWindow中的EditText未被关注,android,android-listview,android-edittext,android-popupwindow,Android,Android Listview,Android Edittext,Android Popupwindow,我有一个列表视图,每行都有一个文本视图,单击该行后,我希望在该行下弹出一个带有编辑文本的弹出窗口。然后,用户输入的文本应显示在该行的TextView中 当我点击一行时,TextView确实会出现,但我没有屏幕上的键盘。但我使用的是emulator,我在键盘上键入的任何内容都会出现在EditText中。但我显然也需要屏幕上的键盘。此外,由于EditText似乎从来没有焦点,我无法摆脱它,因为当EditText失去焦点时,我会忽略PopupWindow 我已经看过了,还有一些其他的答案。他们都说se
列表视图
,每行都有一个文本视图
,单击该行后,我希望在该行下弹出一个带有编辑文本
的弹出窗口
。然后,用户输入的文本应显示在该行的TextView
中
当我点击一行时,TextView
确实会出现,但我没有屏幕上的键盘。但我使用的是emulator,我在键盘上键入的任何内容都会出现在EditText
中。但我显然也需要屏幕上的键盘。此外,由于EditText似乎从来没有焦点,我无法摆脱它,因为当EditText
失去焦点时,我会忽略PopupWindow
我已经看过了,还有一些其他的答案。他们都说setFocusable(true)
应该为PopupWindow
完成。这不管用。其他答案是,关闭并再次显示弹出窗口,或者为弹出窗口设置背景,或者显式调用InputMethodManager inputMgr=(InputMethodManager)getSystemService(Context.INPUT\u METHOD\u SERVICE)代码>和显示软输入,全部尝试,无工作
以下是我的唯一列表项单击代码:
private class SearchItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Log.d("listItemClick", "received lsit click");
final TextView selectTV=(TextView)view.findViewById(R.id.filter_name);
final StringPair selectItem=mSearchFilters.get(position);
final PopupWindow mPopupWindow;
Log.d("listItemClick", "got to else");
LinearLayout layout=new LinearLayout(mContext);
final EditText et=new EditText(mContext);
et.setWidth(LayoutParams.MATCH_PARENT);
et.setTextColor(Color.BLACK);
et.setSingleLine();
et.setBackgroundResource(android.R.drawable.editbox_background_normal);;
layout.addView(et);
mPopupWindow=new PopupWindow(layout, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
selectTV.setText(et.getText().toString());
selectItem.second=et.getText().toString();
mPopupWindow.dismiss();
}
}
});
mPopupWindow.setFocusable(true);
mPopupWindow.update();
mPopupWindow.showAsDropDown(view);
mPopupWindow.dismiss();
mPopupWindow.showAsDropDown(view);
Log.d("listItemClick", "showed popup");
}
}
私有类SearchItemClickListener实现
ListView.com侦听器{
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
Log.d(“listItemClick”,“接收到的lsit click”);
最终文本视图选择TV=(文本视图)view.findViewById(R.id.filter\u name);
final StringPair selectItem=mSearchFilters.get(位置);
最终弹出窗口窗口;
Log.d(“listItemClick”,“got to else”);
LinearLayout布局=新的LinearLayout(mContext);
最终编辑文本et=新编辑文本(mContext);
et.setWidth(LayoutParams.MATCH_父项);
et.setTextColor(颜色为黑色);
等。设置单线();
et.setBackgroundResource(android.R.drawable.editbox_background_normal);;
布局。添加视图(et);
mPopupWindow=新的PopupWindow(布局、LayoutParams.MATCH\u父级、LayoutParams.WRAP\u内容);
et.setOnFocusChangeListener(新的OnFocusChangeListener(){
@凌驾
public void onFocusChange(视图v,布尔hasFocus){
如果(!hasFocus){
选择tv.setText(et.getText().toString());
selectItem.second=et.getText().toString();
mPopupWindow.disclose();
}
}
});
mPopupWindow.setFocusable(true);
mPopupWindow.update();
打开窗口。显示下拉列表(视图);
mPopupWindow.disclose();
打开窗口。显示下拉列表(视图);
d(“listItemClick”,“显示弹出窗口”);
}
}
PS在旁注中,编辑文本宽度非常小,似乎只能包含4-5个字符,如何使其成为完整的屏幕宽度?将宽度设置为与父项匹配不起作用
这是一张图片,小文本,没有键盘:
你可以试试
.
.
.
et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
selectTV.setText(et.getText().toString());
selectItem.second=et.getText().toString();
mPopupWindow.dismiss();
}
}
});
mPopupWindow.showAsDropDown(view);
mPopupWindow.setFocusable(true);
mPopupWindow.update();
.
.
.
从窗口中删除该部分。显示下拉列表(视图);mPopupWindow.disclose();打开窗口。显示下拉列表(视图);然后尝试这些链接