android中dialog中的EditText无法弹出输入法对话框
2016-01-18 16:44
811 查看
很奇怪的是,如果你用原生的AlertDialog,通过setView(new EditText())的方法添加输入框,永远都能弹出输入法;
而在我们自定义AlertDialog中,经常会遇到弹不出输入法的问题,这里我分为2中情况:
一. 在Activity中,自定义AlertDialog中的EditText弹不出输入法
方法一: 在继承AlertDialog, onCreate()方法中, 设置如下:
[java]
view plaincopy
requestWindowFeature(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
原因通过看AlertDialog的说明文档即可得知,它默认是这个:
[java]
view plaincopy
requestWindowFeature(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
文档说AlertDialog默认任务你是不需要和输入法交互,所以设置了一个无EditText的FLAG,,而如果你想和输入法交互,就设置FLAG_NOT_FOCUSABLE,
方法二: 继承Dialog,Dialog默认的样式很丑,,但是需要做2个操作,该操作都是在onCreate方法中进行的
第一: 去掉黑色头部:
[java]
view plaincopy
requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉黑色头部
第二: 去掉黑色背景:
[java]
view plaincopy
getWindow().setBackgroundDrawableResource(android.R.color.transparent);//只有这样才能去掉黑色背景
二.在Fragment中,自定义AlertDialog中的EditText弹不出输入法
这种情况下,activity中的方法是不行的。
我也尝试了设置输入法的各项设置,如:
[java]
view plaincopy
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
也在fragment中和activity进行同样的设置,也让EditText.requestFocus(),但是都不行;
也尝试了在点击EditText的时候,使用InputMethodManager强制弹出,仍然是不行;
后来我在show()方法调用之前,用setView(new EditText())添加一个空的EditText,由于是自定义的AlertDialog,有我们指定的布局,所以这个空的
EditText是不会显示的,这个时候就能弹出对话框了,具体原因不明,猜测应该还是焦点获取的问题,
而在我们自定义AlertDialog中,经常会遇到弹不出输入法的问题,这里我分为2中情况:
一. 在Activity中,自定义AlertDialog中的EditText弹不出输入法
方法一: 在继承AlertDialog, onCreate()方法中, 设置如下:
[java]
view plaincopy
requestWindowFeature(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
原因通过看AlertDialog的说明文档即可得知,它默认是这个:
[java]
view plaincopy
requestWindowFeature(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
文档说AlertDialog默认任务你是不需要和输入法交互,所以设置了一个无EditText的FLAG,,而如果你想和输入法交互,就设置FLAG_NOT_FOCUSABLE,
方法二: 继承Dialog,Dialog默认的样式很丑,,但是需要做2个操作,该操作都是在onCreate方法中进行的
第一: 去掉黑色头部:
[java]
view plaincopy
requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉黑色头部
第二: 去掉黑色背景:
[java]
view plaincopy
getWindow().setBackgroundDrawableResource(android.R.color.transparent);//只有这样才能去掉黑色背景
二.在Fragment中,自定义AlertDialog中的EditText弹不出输入法
这种情况下,activity中的方法是不行的。
我也尝试了设置输入法的各项设置,如:
[java]
view plaincopy
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
也在fragment中和activity进行同样的设置,也让EditText.requestFocus(),但是都不行;
也尝试了在点击EditText的时候,使用InputMethodManager强制弹出,仍然是不行;
后来我在show()方法调用之前,用setView(new EditText())添加一个空的EditText,由于是自定义的AlertDialog,有我们指定的布局,所以这个空的
EditText是不会显示的,这个时候就能弹出对话框了,具体原因不明,猜测应该还是焦点获取的问题,
相关文章推荐
- mediaserver内存泄露分析
- Android应用开发基础篇(2)-----Notification(状态栏通知)
- Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml
- Android内部存储改变读取权限
- Android+JNI+OpenGL开发自己的美图秀秀
- Android自定义控件
- Android 用adb pull或push 拷贝手机文件到到电脑上,拷贝手机数据库到电脑上,拷贝电脑数据库到手机上
- android.mk 自动寻找cpp文件
- android中常见的内存泄露场景
- Android Studio 解决方法数超过65536,导致dex无法生成的问题
- Android消息机制
- Android常用
- android xml中的xliff属性
- Handler类的简单使用与进度条的更新
- android之ViewPager的使用详解
- golang开发android环境搭建_window
- android DevicePolicyManager申请系统管理权限
- android 仿QQ五毛特效之查看红包领取详情界面
- Android定位&地图&导航——基于百度地图,实现自定义图标绘制并点击时弹出泡泡
- Android历代版本号