簡體   English   中英

來自ListView的onItemClick的PopupWindow中的EditText不專注於

[英]EditText in PopupWindow from onItemClick of ListView is not focused on

我有一個ListView ,每行都有一個TextView ,單擊該行后,我希望在該行下彈出一個帶有EditTextPopupWindow 用戶輸入的文本應顯示在該行的TextView中。

當我單擊一行時, TextView確實出現,但是我沒有屏幕上的鍵盤。 但是我正在使用模擬器,無論我在鍵盤上鍵入的內容是否都會出現在EditText 但是我也需要屏幕鍵盤來顯示。 另外,由於EditText似乎從未獲得焦點,所以我永遠也無法擺脫它,因為當EditText失去焦點時,我將關閉PopupWindow

我已經看過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");

            }


    }

附注:在一個旁注中,EditText的寬度很小,似乎只能包含4-5個字符,如何使它成為有效的屏幕寬度? 將寬度設置為MATCH_PARENT無效。

這是一張圖片,很小的edittext,沒有鍵盤:

失敗彈出

你可以試試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM