AlertDialog에 넣었던 EditText에서 포커스는 가있어도 소프트웨어 키보드가 나타나지 않는 증상이 있어서
구글링을 통해 온갖 키보드를 나타내기 위한 시도를 하였다.
final View innerView = View.inflate(MainActivity.this, R.layout.name_edit_popup, null); final EditText editText = (EditText)innerView.findViewById(R.id.nameEdit); final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) .setCustomTitle(innerView) .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // something } }).create(); // 시도 1 dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); // 시도 2 editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } } }); // 시도 3 dialog.setOnShowListener(new OnShowListener() { @Override public void onShow(DialogInterface dialog) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); } }); dialog.show(); |
그런데도 키보드가 나타나지 않아서 멘붕하고 있었는데…
...
final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
.setCustomTitle(innerView)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
...
setView가 아니라 setCustomTitle을 사용하고 있었음을 발견하였다…
CustomTitle에 넣은 EditText에서는 키보드를 보여주지 않는 듯하니 참고하길