摘要: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);

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

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

  1. (转载) EditText初始不弹出软键盘,只有光标显示,点击再弹出

    EditText初始不弹出软键盘,只有光标显示,点击再弹出 2013-06-08 10:13 21305人阅读 评论(5) 收藏 举报  分类: android基础(91)  版权声明:本文为博主原创 ...

  2. EditText默认不弹出软键盘

    #EditText默认不弹出软键盘# 网上关于EditText默认情况下不弹出软键盘,当手触摸到EditText,获取焦点时候,才会弹出软键盘,貌似都不能用,其实,在oncreate()方法中,加上 ...

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

    在android中点击EditText的时候会弹出软键盘,但当我们输入完毕或者想隐藏软键盘时,我们可以点击软键盘上的隐藏按钮,这种方法固然可行,但是为了提高用户体验,我们常常要实现这种功能:当输入完毕 ...

  4. Android开发之使一打开activity等界面Edittext获取焦点,弹出软键盘java代码实现

    // 获取编辑框焦点 editText.setFocusable(true); //打开软键盘 IInputMethodManager imm = (InputMethodManager)getSys ...

  5. 设置光标聚焦输入框(EditText)并弹出软键盘(在适配器中设置)

    参考代码: public void setFocusEditTextAndShowSoftInput(final EditText editText){ editText.setFocusable(t ...

  6. android edittext 获取焦点并弹出软键盘

    editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.requestFocus(); activi ...

  7. EditText根据焦点弹出软键盘

    //每次启动都清除焦点 myCourse_roomId_input.setText(""); myCourse_roomId_input.clearFocus(); //判断是否获 ...

  8. android edittext不弹出软键盘

    方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如:< ...

  9. Android 自定义AlertDialog的写法和弹出软键盘和覆盖状态栏

    private void showMyDialog(int layoutId){ AlertDialog myDialog = new AlertDialog.Builder(context).cre ...

随机推荐

  1. 重写Oracle的wm_concat函数,自定义分隔符、排序

    oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...

  2. Python 过算符和数据类型

    一.算术运算符 二.逻辑运算符

  3. IT行业的技术类岗位分为许多种,如何判断自己适合哪种?

    A.硬件工程师B.软件工程师C.UI设计师D.仿真工程师E.ERP工程师F.集成工程师G.系统架构设计师H.数据库工程师I.网络管理员J.网络安全工程师K.网站架构设计师L.网页设计M.Flash设计 ...

  4. 【原创】相对完美的垂直居中popup(modal/dialog),无需监听window.resize事件

    <table class="popup" style="position: absolute; background-color: black; border-ra ...

  5. 图解Javascript原型链

    本文尝试阐述Js中原型(prototype).原型链(prototype chain)等概念及其作用机制.上一篇文章(图解Javascript上下文与作用域)介绍了Js中变量作用域的相关概念,实际上关 ...

  6. java-map和object装换

    /** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String ...

  7. MFC 文件遍历

    对文件的操作MFC提供了CFileFind 类,运用此类,我们可以轻松的多文件进行操作 假设我们删除当前目录下所有jpg格式的图片: CFileFind finder; CFile fp; bool ...

  8. Windows7SP1补丁包(Win7补丁汇总) 32位/64位版 更新截至2016年11月

    Windows7SP1(64位)补丁包(Win7补丁汇总)更新到本月最新.包含Windows7SP1中文版所有重要补丁,可离线安装,适用于Windows 7 SP1 64位 简体中文系统.包含Inte ...

  9. UIActivityViewController 系统社交化 共享

    1.UIActivityViewController是继承自UIViewController,是拥有VC的特性 a.初始化 init  , initWithActivityItems:applicat ...

  10. 怪物AI之发现玩家(视觉范围发现系列)

    在网上找到一些资料参考,然后写写自己的想法. 这里感谢MOMO等大神. 我们用玩家检测怪物的方法来测,这样比较试用与弱联网游戏,每次在同步玩家的时候来判断玩家与怪物的位置. 这里给出两个处理方式: 1 ...