我想做什么:我正在创建一个创建AlertDialog的活动,此活动以编程方式和edittext格式引入AlertDialog。我想确保聚焦这样的edittext并显示键盘。
在SO中有很多线程,当使用布局创建视图时,会出现如何执行该操作(如Android TextField : set focus + soft input programmatically)的好解释(等等,你有和id)。
但是,有几条规则,特别是,您无法将视图聚焦到屏幕上。
所以我发生的事情是,我以编程方式创建了edittext,然后我显示了对话框,之后我无法访问我的视图,因为它没有ID(不能使用findviewbyid)。 / p>
那么,如何在AlertDialog中以编程方式创建Edittext请求焦点和显示键盘?
我在这里展示了代码的骰子(为了简单起见,删除了正确的按钮和负面按钮):
final EditText input = new EditText(getApplicationContext());
input.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
input.setGravity(Gravity.LEFT);
input.setImeOptions(EditorInfo.IME_ACTION_DONE);
input.setText(current_name);
input.setTextColor(Color.BLACK);
input.setBackgroundColor(Color.WHITE);
input.setFocusableInTouchMode(true);
input.requestFocus();
AlertDialog EditDialog =new AlertDialog.Builder(this)
//set message, title, and icon
.setTitle(title_id)
.setIcon(R.drawable.ic_launcher_blue2)
.setView(input)
我想做的是当我的EditDialog在屏幕上布局时,我可以请求关注输入并显示键盘。
答案 0 :(得分:0)
试试这个:
input.setFocusableInTouchMode(true);
input.requestFocus();