PopViewWindow中的EditText来自ListView的onItemClick没有关注

时间:2014-06-30 07:30:56

标签: android android-listview android-edittext android-popupwindow

我有一个ListView,每行都有一个TextView,点击该行后,我想要一个PopupWindow,其中EditText会在该行下方显示。然后,用户输入的文本应显示在行的TextView中。

当我点击一行时,TextView会出现,但我没有获得屏幕键盘。但我正在使用模拟器,而我在键盘上键入的内容确实出现在EditText中。但我显然需要屏幕键盘才能显示出来。此外,由于EditText似乎永远不会有焦点,我永远无法摆脱它,因为当PopupWindow失去焦点时,我正在解雇EditText

我查看了thisthis以及其他一些答案。他们都说setFocusable(true)应该PopupWindow。这没有用。其他答案说解除并再次显示弹出窗口或设置弹出窗口的背景,或显式调用InputMethodManager inputMgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);并显示软输入,尝试全部,无效。

这是我的onListItemClick代码:

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");

            }


    }

PS 在旁注中,EditText的宽度非常小,似乎只能包含4-5个字符,如何才能使其成为全屏宽度?将宽度设置为MATCH_PARENT不起作用。

这是一张图片,小编辑文字,没有键盘:

fail popup

1 个答案:

答案 0 :(得分:0)

你可以尝试

.
.
.
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();
.
.
.