(原)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);
具体的用法还有很多,在此就不一一列举了,有兴趣的读者可以去查阅google文档.
(原)android的alertdialog中加入edittext但是不弹出软键盘等问题的解决与原因的更多相关文章
- (转载) EditText初始不弹出软键盘,只有光标显示,点击再弹出
EditText初始不弹出软键盘,只有光标显示,点击再弹出 2013-06-08 10:13 21305人阅读 评论(5) 收藏 举报 分类: android基础(91) 版权声明:本文为博主原创 ...
- EditText默认不弹出软键盘
#EditText默认不弹出软键盘# 网上关于EditText默认情况下不弹出软键盘,当手触摸到EditText,获取焦点时候,才会弹出软键盘,貌似都不能用,其实,在oncreate()方法中,加上 ...
- Android--点击EditText的时候弹出软键盘,点击EditText之外空白处软键盘消失
在android中点击EditText的时候会弹出软键盘,但当我们输入完毕或者想隐藏软键盘时,我们可以点击软键盘上的隐藏按钮,这种方法固然可行,但是为了提高用户体验,我们常常要实现这种功能:当输入完毕 ...
- Android开发之使一打开activity等界面Edittext获取焦点,弹出软键盘java代码实现
// 获取编辑框焦点 editText.setFocusable(true); //打开软键盘 IInputMethodManager imm = (InputMethodManager)getSys ...
- 设置光标聚焦输入框(EditText)并弹出软键盘(在适配器中设置)
参考代码: public void setFocusEditTextAndShowSoftInput(final EditText editText){ editText.setFocusable(t ...
- android edittext 获取焦点并弹出软键盘
editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.requestFocus(); activi ...
- EditText根据焦点弹出软键盘
//每次启动都清除焦点 myCourse_roomId_input.setText(""); myCourse_roomId_input.clearFocus(); //判断是否获 ...
- android edittext不弹出软键盘
方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如:< ...
- Android 自定义AlertDialog的写法和弹出软键盘和覆盖状态栏
private void showMyDialog(int layoutId){ AlertDialog myDialog = new AlertDialog.Builder(context).cre ...
随机推荐
- poj[2104]K-th Number
Description You are working for Macrohard company in data structures department. After failing your ...
- 数据表格 - DataGrid - 行编辑
行编辑一般用于单行数据的增删改,如果不用行编辑实现的话,对于表单数据量不大的情况,可以使用弹窗(Dialog),如果数据量比较大,也就是需要操作的数据比较多的时候,可以新开一个tab页. 新增/编辑 ...
- 有return的情况下try catch finally的执行顺序(转)
结论:1.不管有木有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的(此时并没 ...
- [原创翻译]Protocol Buffer Basics: C#
Protocol Buffer 基础知识:c# 原文地址:https://developers.google.com/protocol-buffers/docs/csharptutorial ...
- 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II
好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...
- C#扩展方法知多少
前言:上篇 序列化效率比拼——谁是最后的赢家Newtonsoft.Json 介绍了下序列化方面的知识.看过Demo的朋友可能注意到了里面就用到过泛型的扩展方法,本篇打算总结下C#扩展方法的用法.博主打 ...
- 关于Interception框架
对于OOP来说,是个树形结构,如果要实现多个子数之间的共享服务,例如很多子树都用到日志服务,这时候AOP的横切关注 cross cutting concerns就非常有用了.如果要使每个类具备一项功能 ...
- js 判断各种数据类型
了解js的都知道, 有个typeof 用来判断各种数据类型,有两种写法:typeof xxx ,typeof(xxx) 如下实例: typeof 2 输出 number ...
- linux基础知识与技能3
3.2.vi的高级使用* 查找在命令模式下,输入/xxx,就可以查找到xxx * 快速切换行在命令模式下,输入:num,就可以快速切换到num行 * 设置显示行号在命令模式下,输入:set nu,就可 ...
- Ubuntu 下,修改 Mac address
ifconfig // check Mac address sudo ifconfig eth0 down sudo ifconfig eth0 hw ether xx:xx:xx:xx: ...