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();打开窗口。显示下拉列表(视图);然后尝试这些链接