0

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

当我单击一行时,TextView确实会出现,但我没有得到屏幕键盘。但是我使用的是模拟器,我在键盘上输入的任何内容都会出现在EditText. 但我也需要屏幕键盘来明显地出现。此外,由于 EditText 似乎从来没有焦点,我永远无法摆脱它,因为我PopupWindowEditText失去焦点时忽略了它。

我也看过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 不起作用。

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

失败弹出

4

1 回答 1

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();
.
.
.
于 2014-06-30T07:54:28.447 回答