android中自定义的对话框中的EditText无法弹出输入法解决方案

很奇怪的是,如果你用原生的AlertDialog,通过setView(new EditText())的方法添加输入框,永远都能弹出输入法;

而在我们自定义AlertDialog中,经常会遇到弹不出输入法的问题,这里我分为2中情况:

一. 在Activity中,自定义AlertDialog中的EditText弹不出输入法

方法一:  在继承AlertDialog, onCreate()方法中, 设置如下:

requestWindowFeature(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);

原因通过看AlertDialog的说明文档即可得知,它默认是这个:

requestWindowFeature(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

文档说AlertDialog默认任务你是不需要和输入法交互,所以设置了一个无EditText的FLAG,,而如果你想和输入法交互,就设置FLAG_NOT_FOCUSABLE,

方法二:  继承Dialog,Dialog默认的样式很丑,,但是需要做2个操作,该操作都是在onCreate方法中进行的

第一: 去掉黑色头部:

requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉黑色头部

第二: 去掉黑色背景:

getWindow().setBackgroundDrawableResource(android.R.color.transparent);//只有这样才能去掉黑色背景

二.在Fragment中,自定义AlertDialog中的EditText弹不出输入法

这种情况下,activity中的方法是不行的。

我也尝试了设置输入法的各项设置,如:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

也在fragment中和activity进行同样的设置,也让EditText.requestFocus(),但是都不行;

也尝试了在点击EditText的时候,使用InputMethodManager强制弹出,仍然是不行;

后来我在show()方法调用之前,用setView(new EditText())添加一个空的EditText,由于是自定义的AlertDialog,有我们指定的布局,所以这个空的

EditText是不会显示的,这个时候就能弹出对话框了,具体原因不明,猜测应该还是焦点获取的问题,

时间: 2024-10-13 15:59:11

android中自定义的对话框中的EditText无法弹出输入法解决方案的相关文章

android中自定义的dialog中的EditText无法弹出输入法解决方案

1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有我们指定的布局,所以设置这个不会影响我们的功能,这样就可以弹出输入法了…… 2.可以弹出输入法了,但了为了增强用户体验性,当dialog中含有editText时应该,在显示dialog的同时自动弹出键盘: (1) 可以在自定义的dialog中增加如下方法: [java] view plain cop

自定义的dialog中的EditText无法弹出输入法解决方案

1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有我们指定的布局,所以设置这个不会影响我们的功能,这样就可以弹出输入法了-- 2.可以弹出输入法了,但了为了增强用户体验性,当dialog中含有editText时应该,在显示dialog的同时自动弹出键盘: (1) 可以在自定义的dialog中增加如下方法: public void showKeybo

Android EditText不弹出输入法焦点问题的总结

转自:http://mobile.51cto.com/aprogram-403138.htm 看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属性:android:windowSoftInputMode=stateVisible,这样就会默认弹起输入法,当然还有别的办法. 1 <activity android:name=".ui.login" 2 android:configChang

手机调用系统的拍照和裁剪功能,如果界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。

code如下: //Longest common sequence, dynamic programming method void FindLCS(char *str1, char *str2) { if(str1 == NULL || str2 == NULL) return; int length1 = strlen(str1)+1; int length2 = strlen(str2)+1; int **csLength,**direction;//two arrays to recor

Android-------- AlertDialog中EditText无法弹出输入法的解决

文章转自:http://21jhf.iteye.com/blog/2007375: 如果AlertDialog中有编辑录入框(newMainLayout里面动态创建了EditText控件),show后无法显示输入法 AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(modalWindowTitle); builder.setView(newMainLayout); builder.se

[转]Android EditText不弹出输入法以及光标设置

最近在做拨号应用,需要点击输入框的时候弹出自定义的键盘,隐藏系统的输入法.网上找了不少资料,终于给解决了,通过 android:inputType:指定输入法的类型,int类型,可以用|选择多个.取值可以参考:android.text.InputType类.取值包括:text,textUri, phone,number,等. Android SDK中有这么一句话“If the given content type is TYPE_NULL then a soft keyboard will no

取消 EditText 自动聚焦弹出输入法界面

方法一(实测可行): 参考http://www.cnblogs.com/dream-cichan/p/aaaa.html 当我点击跳转至一个带有EditText的界面后,模拟器中的软键盘会自动弹出,严重影响了用户体验.在网上找了资料,现总结如下. 我们知道,EditText有一个 android:focusable=""的属性,但是如果你在edittext中直接将这个属性设置为true的话,点进去软键盘确实不会再弹出,但是EditText相应的也失去了聚焦,即无论你怎么点击它都不会有反

Android中使EditText失去焦点,edittext禁止弹出键盘

在我们的应用中,有时候一进入一个页面, EditText默认就会自动获取焦点.弹出输入法框,用户体验很不好, 那么如何取消这个默认行为呢? ps:这篇文字是一年前写的,现在有网友再问这个问题,我进行重新编辑--2014.05.07,目前有更好的办法,第一种方法局限性很强,大家可以使用第二种方法 第一种方法:.在网上找了好久,有点监听软键盘事件的方法,有调用 clearFouse()方法,但是测试了都不行!在对应的 xml中也找不到相应的属性可以关闭这个默认行为. 后来研究了一下,在其父控件下,添

Android中使EditText失去焦点,edittext禁止弹出键盘[转]

转自http://www.cnblogs.com/yejiurui/archive/2013/01/02/2841945.html 在我们的应用中,有时候一进入一个页面, EditText默认就会自动获取焦点.弹出输入法框,用户体验很不好, 那么如何取消这个默认行为呢? ps:这篇文字是一年前写的,现在有网友再问这个问题,我进行重新编辑--2014.05.07,目前有更好的办法,第一种方法局限性很强,大家可以使用第二种方法 第一种方法:.在网上找了好久,有点监听软键盘事件的方法,有调用 clea