がありListView
、各行には があり、行TextView
をクリックすると が行の下に表示PopupWindow
さEditText
れます。ユーザーが入力したテキストはTextView
、行の に表示されます。
行をクリックするとTextView
表示されますが、スクリーン キーボードが表示されません。しかし、私はエミュレーターを使用しており、キーボードで入力したものはすべてEditText
. しかし、明らかにオンスクリーンキーボードも表示する必要があります。また、EditText にはフォーカスがないように見えるため、フォーカスを失ったPopupWindow
ときにを却下しているため、決して取り除くことはできません。EditText
this、this、および他のいくつかの回答も見ました。彼らは皆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 に設定しても機能しません。
これは写真、小さな編集テキスト、キーボードなしです: