记录一下刚刚解决的问题,DialogFragment中的EditText获得焦点后自动弹出输入法的办法。

网上找到好多资料,但是很多已经过时或者不是针对dialog的设置。

现在将我测试成功的方法记录如下,供大家参考。

现在比较喜欢继承DialogFragment来实现dialog,这样dialog相关的代码可以分离出去,而且dialog的生命周期可以和Fragment一样管理。而我们现在讨论的弹出输入法也和生命周期回调方法有关。

继承DialogFragment实现dialog,实现onCreateDialog()方法,在这个方法中创建dialog并返回,这和以前创建diglog是一样的。

@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {log.info("onCreateDialog");AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());builder.setTitle("密码输入框");builder.setMessage("输入密码:");editTextPassword = new EditText(getActivity());editTextPassword.setFocusable(true);editTextPassword.setFocusableInTouchMode(true);editTextPassword.requestFocus();builder.setView(editTextPassword);builder.setPositiveButton(android.R.string.ok, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.setNegativeButton(android.R.string.cancel, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});return builder.create();}

上面的代码创建了一个Alert类型的Dialog,并且包含一个可以输入的EditText。

好多人都说,EditText获得焦点后,就会弹出输入法,其实不然。具体原因我也不是很清楚,在这里我们还需要手动让输入法出现。

实现DialogFragment的生命周期方法onResume(),这个方法会在dialog显示的时候被回调,然后在里面发送一个延时消息,调出输入法。

@Overridepublic void onResume() {super.onResume();log.info("onResume");(new Handler()).postDelayed(new Runnable() {public void run() {log.info("postDelayed");InputMethodManager inManager = (InputMethodManager)editTextPassword.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);inManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);}},500);}

run()方法中的那两句代码就是启动输入法的,如果不用延时的方法,输入法会瞬间弹出,然后又消失。原因我还是不知道,才疏学浅,请见谅。

这样,我们在使用这个dialog的时候,就会自动弹出输入法了。

Android中DialogFragment自动弹出输入法相关推荐

  1. Android中EditText隐藏/自动弹出输入法的问题

    有些时候我们的应用需要在EditText聚焦时自动弹出输入法,或者隐藏输入法,关于输入法弹出,一般不会有什么问题.但是,有一些情况输入法是没发自动弹出的,比如弹出的对话框里有edittext,介绍一些 ...

  2. Android中EditText优先弹出数字输入法

    Android Android中EditText优先弹出数字输入法 项目中一个EditText输入数字的频率较高,但是汉字和英文的输入也偶有需要,直接在xml文件将inputType设置为number ...

  3. WindowManager解析(二)Android悬浮框无法弹出输入法的原因和无需权限显示悬浮窗

    Android悬浮框无法弹出输入法 最近要研究悬浮窗方面的东西,遇到一个问题,我的悬浮窗里面有一个输入框,但是不弹出输入法,后来找到一个方法: 在WindowManager的实例获取方式不对,之前是这 ...

  4. android禁止输入框自动弹出软键盘,怎么禁用输入法-Android禁止EditText输入框自动弹出软键盘的4种方法...

    用户UI如果有EDITTEXT,经常会自己获得焦点弹出来,如果不需要输入法键盘,就需要禁止弹出.经常使用,现在总结如下: 1.父控件设置属性不弹出 EditText有一个 android:focusa ...

  5. EditText自动弹出输入法问题

    稍微测试了一下发现,在布局里有ListView就会出现自动弹输入法并且把屏幕顶上去的状况. 解决: 在OnCreate方法里面加下面这句代码 代码实现举例:// 隐藏软键盘  //ps:下面方法参数只 ...

  6. Android 软键盘自动弹出和关闭

    在我们写修改信息或者搜索,修改密码等界面的时候,用户进入这个界面的主要目的就是输入修改/查找 某些信息,为了用户体验应该自动弹出软键盘而不是让用户主动点击输入框才弹出. 1.软键盘的自动弹出 priv ...

  7. Android中软键盘弹出时关于布局的问题

    当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...

  8. Android中软键盘弹出可能遮挡布局

    当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...

  9. android软键盘自动弹出,Android屏蔽软键盘自动弹出的解决方案

    问题概述 在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面,我们先看一下问题效果图: 输入用户名和密码时,系统会弹出键盘,造成系统键盘会挡住文本框的问题,如图所示: 输入密码时输入 ...

最新文章

  1. Maven -- 使用Myeclipse创建Maven项目
  2. 数据中台(二)数据质量分析及提升
  3. 专题目录20211013-ongoing
  4. vivado烧写FPGA速度调节
  5. 深度学习 图像分类_深度学习时代您应该阅读的10篇文章了解图像分类
  6. 【转】C++ 存储类
  7. Flash小玩意图案创作:新增MulCircle和圆环
  8. PhotoSwipe异步动态加载图片
  9. FortiGate设备管理
  10. 拓端tecdat|使用Python中Keras的LSTM递归神经网络进行时间序列预测
  11. HashMap[转]
  12. php 字母加1,PHP语法(1)
  13. Android经典的大牛博客推荐(排名不分先后)!!
  14. u盘dos启动盘制作工具 v9.36正式版
  15. 《东周列国志》第三十五回 晋重耳周游列国 秦怀嬴重婚公子
  16. otf和ctf的意义_OTF与CTF的比较与.ppt
  17. Linux实训项目——第十一章:基础DNS服务器与主从同步
  18. android WebView多标签,加速解决卡顿,视频播放笔记
  19. 三个参数 matlab程序,由XYZ三刺激值,得到Lab值(matlab程序)
  20. Photoshop 2021 M1原生版没有扩展面板怎么办,ps 2021 m1版无法使用旧版插件

热门文章

  1. Linux系统的特点有哪些
  2. Qt4 到Qt5 最小化后 点击任务栏不显示问题
  3. 智能聊天机器人微信小程序
  4. Yii框架里的一些zii用法
  5. Android中使用封装的OKHttp上传图片,从相机和相册中获取图片并剪切
  6. linux mysql 进程查看工具_linux查看正在运行的进程(如何在Linux中查看所有正在运行的进程)...
  7. win10专业版和win10家庭版的区别浅谈
  8. 抖音小店在哪里登录?抖音店怎么运营?
  9. 世界顶级音效公司_世界顶级游戏开发公司
  10. 恭贺新春-杨建荣敬祝