需求大概是这样的:
一个dialog弹窗中有一个view里面有一个edittext,
需要在触发dialog的时候方便用户操作,需要马上使得edittext得到焦点
并且里面的内容全选,这个时候还要把软件盘弹出来….
搞android时间不长,也没有接触过这样的需求,但从字面上感觉没啥难度,实际在实现的时候发现输入法弹不出来….
查询一些资料后特整理代码出来方便大家参考:
$(R.id.fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View view = View.inflate(getActivity(), R.layout.text_dialog, null);
ed = (EditText) view.findViewById(R.id.ed);
ed.setText("123");
ed.setSelectAllOnFocus(true);
new AlertDialog.Builder(getActivity())
.setTitle("请输入")
.setIcon(android.R.drawable.ic_dialog_info)
.setView(view)
.setPositiveButton("确定", null)
.setNegativeButton("取消", null)
.show();
new Handler().postDelayed(new Runnable(){
public void run() {
ed.setFocusable(true);
ed.setFocusableInTouchMode(true);
//请求获得焦点
ed.requestFocus();
//调用系统输入法
InputMethodManager inputManager = (InputMethodManager) ed.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(ed, 0);
}
}, 200);
}
});
做法就是给加个延时,因为这些动作需要在弹窗show出来后,才会执行出效果,效果如下:
欢迎讨论~~补充,,,第一次写博客,也是方便自己记录学习