0

がありListView、各行には があり、行TextViewをクリックすると が行の下に表示PopupWindowEditTextれます。ユーザーが入力したテキストは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 文字しか表示できないようですが、画面全体の幅にするにはどうすればよいですか? width を 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 に答える