android的alertdialog中加入edittext但是不弹出软键盘等问题的解决与原因

摘要:alertdialog中加入edittext但是不弹出软键盘等问题网上有很多不管用的解决方案,

本文意在给出更有效的解决办法,并初步探究其原因

正文

在对话框中插入文本框是十分常见的需求

通常我们选择在代码中创建edittext对象

这个时候就需要在代码中给edittext设置输入属性了

但是经常发现设置的属性不起作用,甚至都不弹出软键盘(虽然实体键盘可以输入)

问题的解决方案有很多种,这里介绍一种我比较常用的方法:

inputPassEditText.setInputType(InputType.TYPE_CLASS_TEXT|InputType.XXX);

就是在设置输入type的时候,按位或上一个inputtype.TYPE_CLASS_TEXT

它在16进制中是0x80

例如一个密码输入对话框可以这么写

AlertDialog.Builder builder = new  AlertDialog.Builder(MainActivity.this);
final EditText inputPassEditText = new EditText(MainActivity.this);
builder.setView(inputPassEditText);

//输入框是密码风格的
inputPassEditText.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);

这样不仅解决了软键盘不弹出的问题,而且也得到了预期的输入效果.

问题解决.

=========================华丽分割线,下面更精彩===================================

其实InputType是android当中的一个类

android.text.InputType

这个类并没有什么方法,只有几十个静态常量

TYPE_CLASS_TEXT就是其中最常用的一个

以TYPE_CLASS开头的常量共有这四种

int TYPE_CLASS_DATEtIME

int TYPE_CLASS_NUMBER

int TYPE_CLASS_PHONE

int TYPE_CLASS_TEXT

Examples它们的用法示例

A password field with with the password visible to the user:(可视的密码输入区域)
inputType = TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
A multi-line postal address with automatic capitalization:(邮政格式的多行输入)
inputType = TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_POSTAL_ADDRESS | TYPE_TEXT_FLAG_MULTI_LINE
A time field:(输入时间)
inputType = TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_TIME

可见google的api暴露给我们的用法就是利用CLASS与FLAG等按位或来达到想要的效果(google精心设计了每个常量的2进制位)

这里我给出两个常用的例子:

输入数字密码

inputPassEditText.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_VARIATION_PASSWORD);

输入数字明文:

inputPassEditText.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_VARIATION_NORMAL);

具体的用法还有很多,在此就不一一列举了,有兴趣的读者可以去翻阅goole官方文档.

时间: 2024-10-27 09:46:17

android的alertdialog中加入edittext但是不弹出软键盘等问题的解决与原因的相关文章

EditText默认不弹出软键盘

#EditText默认不弹出软键盘# 网上关于EditText默认情况下不弹出软键盘,当手触摸到EditText,获取焦点时候,才会弹出软键盘,貌似都不能用,其实,在oncreate()方法中,加上 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 就能达到预期效果,至于,让EditText永远不获取焦点的方法,网上大把的,百度即可,暂时没有遇见让EditText永远不获取焦点的场

Android--点击EditText的时候弹出软键盘,点击EditText之外空白处软键盘消失

在android中点击EditText的时候会弹出软键盘,但当我们输入完毕或者想隐藏软键盘时,我们可以点击软键盘上的隐藏按钮,这种方法固然可行,但是为了提高用户体验,我们常常要实现这种功能:当输入完毕后想隐藏软键盘时我们通过直接点击EditText的之外的其他空白处就可以隐藏软键盘,这种做法明显比点击软键盘自身的隐藏按钮要方便的多. 要实现上述功能只需重写 public boolean onTouchEvent(MotionEvent event)方法,做相应软键盘隐藏的处理操作即可. Inpu

EditText 单击无法弹出软键盘

EditText是android系统自带的控件,通过单击,系统会自动调用当前输入法的软键盘,但是有时候却会出现edittext无法弹出软键盘的情况. 说说我目前遇到这种情况的环境.本人在创建一个装着listview的菜单fragment,右边是相应的每个listitem对于的内容,用另一个fragment来包容一些带有edittext控件的布局. 在一开始单击edittext还是正常的,但是当滑动listview的时候,再次单击edittext,居然没有弹出相应的软键盘.这个问题困扰了我许久,因

android edittext不弹出软键盘

EditText 不弹出软件键盘2011-05-17 12:291.EditText默认不弹出软件键盘 方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如:<activity android:name=".Main"                   android:label="@string/app_name"   

【android】禁止Edittext弹出软键盘并且使光标正常显示

/** * 禁止Edittext弹出软件盘,光标依然正常显示. */ public void disableShowSoftInput() { if (android.os.Build.VERSION.SDK_INT <= 10) { editText.setInputType(InputType.TYPE_NULL); } else { Class<EditText> cls = EditText.class; Method method; try { method = cls.get

分享:EditText默认不弹出软件键盘

方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如: <activityandroid:name=".Main"android:label="@string/app_name"android:windowSoftInputMode="adjustUnspecified|stateHidden"andro

EditText 默认不获取焦点,弹出软键盘布局变形解决方案

关于弹出软键盘布局变形解决方案: 在androidMainfest.xml文件中在此Activity中写入 android:windowSoftInputMode="adjustPan" 在实际开发中,有的页面用到Edittext控件,这时候进入该页面可能会自动弹出输入法 这么显示不太友好,所以需要设置一下让Edittext默认不自动获取焦点.在网上查资料解决办法如下: 在EditText的父级控件中找一个,设置成 android:focusable="true"

Cocos2d-X中使用CCTextFieldTTF的简单应用显示文本和弹出软键盘

 学了几天Cocos2d-X后今天终于可以试试Cocos2d-X的跨平台开发了,由于条件的限制,我只会测试Cocos2d-X在Android平台上的开发,今天就以一个简单的文本测试Android上的效果,需要用到CCTextFieldTTF类,CCTextFieldTTF是一个显示文本控件的类用于输入文本和现实文本类似于Windows编程中的Static控件和Edit控件 程序实例:使用TextFieldTTF类创建一个文本,触摸文本弹出软键盘 首先创建一个TextFieldTTF.h的头文

设置EditText不弹出软键盘

两种方式设置EditText不弹出软键盘 1.设置焦点在其他控件上: 设置 android:focusable="" android:focusableInTouchMode="" 属性为false 2.设置activity不自动弹出软键盘: 在AndroidManifest.xml设置: <activity android:name="smalt.manger.sms.SmsShowDetailItemsActivity" android