Android学习问题:关于AlertDialog中自定义布局带有的EditText无法弹出键盘
来源:互联网 发布:淘宝宝贝怎么插图地图 编辑:程序博客网 时间:2024/05/22 16:39
最近在用到AlertDialog的时候,自定义了其布局文件,其中带有EditText,但是发现在手机上使用的时候,点击EditText却没有弹出键盘,在网上搜索了下,看到有好几种解决方法,试过其中一些方法,有些有效果,有些却是没有效果,在这里小小总结下;
1.第一种是在AndroidManifest.xml中,把此Activity的属性,加个android:windowSoftInputMode=”stateVisible|adjustResize”。
这个方法有试过,但是效果是一进入这个Activity就弹出键盘,而在弹出我所需要的dialog时,点击EditText是依然没有弹出键盘的;
2.加入下面这段代码,这是我最终采取的一个解决方法:
alertDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
这是参考了关于AlertDialog.getWindow().setContentView(view)不能弹出输入法
3.另外,对于是自定义了AlertDialog 的,还有一种解决方法是继承Dialog类,而不是AlertDialog,不过由于我只是自定义布局,并不是自定义AlertDialog控件,所以这个方法并没有亲自试过.
如果是自定义Dialog的,还有一个参考方法如下:
参考自 android中自定义的dialog中的EditText无法弹出输入法解决方案
1.解决无法弹出输入法:
在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有我们指定的布局,所以设置这个不会影响我们的功能,这样就可以弹出输入法了……
2.可以弹出输入法了,但了为了增强用户体验性,当dialog中含有editText时应该,在显示dialog的同时自动弹出键盘:
(1) 可以在自定义的dialog中增加如下方法:
public void showKeyboard() { if(editText!=null){ //设置可获得焦点 editText.setFocusable(true); editText.setFocusableInTouchMode(true); //请求获得焦点 editText.requestFocus(); //调用系统输入法 InputMethodManager inputManager = (InputMethodManager) editText .getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText, 0); } }
其中editText为自定义dialog中的输入框的view
(2) 在dialog.show()后,调用这个方法显示输入法,由于在调用时可能dialog界面还未加载完成,editText 可能还为空,所以需要加上一个延时任务,延迟显示:
dialog.show(); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { dialog.showKeyboard(); } }, 200);
在这篇Android开发 解决AlertDialog中的EditText无法调出输入法的问题中,也给出了两个解决方法:
在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题。
解决方法,有两种,一是把AlertDialog换成Dialog,但这么一来,对话框的最外层会多出一个框,顶部还会空几十个DP,当然可以用setBackgroundDrawable(new ColorDrawable(0))把背景设为透明,隐藏掉边框,但是上面空着的几十个DP还在,对话框就不是在屏幕居中了。
代码:
Dialog ad = new Dialog(context);ad.show();Window window = ad.getWindow();window.setBackgroundDrawable(new ColorDrawable(0)); window.setContentView(R.layout.cancel_sos_dialog);
其解决方法是采用自定义的style:
<style name="CustomDialogStyle" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:backgroundDimAmount">0.6</item> </style>
Dialog ad = new Dialog(context,R.style.CustomDialogStyle);
最好的办法是第二种:
AlertDialog ad = new AlertDialog.Builder(context).create(); ad.setView(ManagerDialogLayout_.build(context,ad));ad.show();Window window = ad.getWindow();window.setContentView(ManagerDialogLayout_.build(context,ad));
在调用show方法前先调用setView(layout),show后再调用window.setContentView(layout),两个Layout布局应该是相同的。
至于原因,暂时不明,有待解决。
- Android学习问题:关于AlertDialog中自定义布局带有的EditText无法弹出键盘
- 自定义AlertDialog中EditText无法弹出键盘的解决方案
- AlertDialog自定义view中edittext无法弹出问题
- 解决在自定义AlertDialog中EditText无法弹出软键盘的问题
- 关于AlertDialog中嵌入Edittext无法弹出输入法的问题解决
- 自定义AlertDialog,加入EditText控件无法弹出键盘
- Android AlertDialog中EditText无法弹出输入法
- Android alertDialog 动态添加edittext无法弹出键盘解决方案
- android获取自定义布局的alertdialog中edittext的值
- Android自定义dialog中的EditText无法弹出键盘的解决
- Android自定义dialog中的EditText无法弹出键盘的解决
- Android自定义dialog中的EditText无法弹出键盘的解决
- AlertDialog 自定义布局 以及 EditText 无法弹出软键盘的解决
- AlertDialog自定义布局中有editText,不能弹出软键盘
- AlertDialog实现自定义布局以及解决EditText无法弹出软键盘或者软键盘弹出错误问题
- 关于popupwindow中含有EditText,点击无法弹出键盘的问题
- android自定义AlertDialog对话框中的EditText无法弹出输入法解决方案
- android中AlertDialog包含EditText时弹出键盘
- Leetcode---Surrounded Regions
- java 虚拟机
- dns欺骗
- 第六周项目四--阅读程序(成员函数、友元函数、一般函数)
- ORA-600 [krr_assemble_cv_3]错误
- Android学习问题:关于AlertDialog中自定义布局带有的EditText无法弹出键盘
- bison(yacc)学习笔记
- python httplib2的安装
- 自动布局教程(一)
- jQuery和CSS3超酷3D页面切换导航菜单插件
- 自动布局教程(二)
- 内部错误,试图在初始化前展开展开app常量 【第四次修正】
- Android Binder及参考资料
- 追逐自己的梦想----------辅助制作第三十三课:向仓库存入N个物品对象汇编实现代码