Android开发 解决AlertDialog中的EditText无法调出输入法的问题

在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题。
解决方法,有两种,一是把AlertDialog换成Dialog,但这么一来,对话框的最外层会多出一个框,顶部还会空几十个DP,当然可以用setBackgroundDrawable(new ColorDrawable(0))把背景设为透明,隐藏掉边框,但是上面空着的几十个DP还在,对话框就不是在屏幕居中了。
代码:

Dialog ad = new Dialog(context);
ad.show();
Window window = ad.getWindow();
window.setBackgroundDrawable(new ColorDrawable(0));
window.setContentView(R.layout.cancel_sos_dialog);

最好的办法是第二种:

AlertDialog ad = new AlertDialog.Builder(context).create();
ad.setView(ManagerDialogLayout_.build(context,ad));
ad.show();
Window window = ad.getWindow();
window.setContentView(ManagerDialogLayout_.build(context,ad));

在调用show方法前先调用setView(layout),show后再调用window.setContentView(layout),两个Layout布局应该是相同的。

至于原因,暂时不明,但是确实解决了问题,在EditText上点击,可以调出软键盘,输入法了。

2013年1月6日:第一种方法的BUG,解决方法:
使用自定义的Style:

<style name="CustomDialogStyle" parent="@Android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:backgroundDimAmount">0.6</item>
</style>

Dialog ad = new Dialog(context,R.style.CustomDialogStyle);
时间: 2024-10-10 20:58:51

Android开发 解决AlertDialog中的EditText无法调出输入法的问题的相关文章

EditText的输入法显示、隐藏和AlertDialog中的EditText无法调出输入法的问题

很好用的隐藏和显示输入法,因为dialog中自定义的EditText显示输入法的问题弄了我好长时间,特此将代码拷贝下来,顺带说明下,在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题. EditText的输入法显示和隐藏 <pre name="code" class="java">private EditText mSearchEdit; mSearchEdit = (Edi

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

摘要:alertdialog中加入edittext但是不弹出软键盘等问题网上有很多不管用的解决方案, 本文意在给出更有效的解决办法,并初步探究其原因 正文 在对话框中插入文本框是十分常见的需求 通常我们选择在代码中创建edittext对象 这个时候就需要在代码中给edittext设置输入属性了 但是经常发现设置的属性不起作用,甚至都不弹出软键盘(虽然实体键盘可以输入) 问题的解决方案有很多种,这里介绍一种我比较常用的方法: inputPassEditText.setInputType(Input

Android开发--解决AndroidADT开发工具不能代码提示的问题

google android的新的开发工具,打开以后没有代码自动提示功能,下面对ADT工具的一些配置: 1.设置代码的字体 设置JAVA文件代码的字体:我这里设置的14 常规. 2.设置XML文件中代码的字体: 3.设置代码编辑器的背景颜色 色调85.饱和度90.亮度205 RGB:199.237.204 自定义: 4.设置代码提示功能: 快捷方式:Alt + /    可以出现代码提示. 默认的只有输入“ .” 以后才会有代码补全提示,可作如下设置: java->content Assist-

如何获取一个AlertDialog中的EditText中输入的内容

怎么获取一个AlertDialog中的EditText中输入的内容? new AlertDialog.Builder(this)   .setTitle("请输入")   .setIcon(android.R.drawable.ic_dialog_info)   .setView(new EditText(this))   .setPositiveButton("确定", null)   .setNegativeButton("取消", null

android- 对话框中弹出edittext 不能调出输入法

最近项目中用到 dialog弹出对话框功能, 弹出后输入 密码, 本以为这是一个很简单问题,但是做好发现Edittext 无法调出输入法. 解决方法,我也是百度找到的 . 记录一下,便于下次使用: final Dialog alertDialog = new Dialog(this,R.style.CustomDialogStyle); alertDialog.show(); Window window = alertDialog.getWindow(); window.setBackgroun

Android开发技巧二--避免在EditText中验证日期

开发者都知道验证表单里的数据是令人厌烦而且容易出错的,日期输入框的验证也是如此.我们可以开发出一个外观看起来与EditText相同Button,点击该Button后,会显示一个DatePicker控件. 要实现上面的想法,需要将Button控件的默认背景改成EditText的背景. 看一下main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q

Android开发——VirtualBox环境中的虚拟机使用

题目想了半天,还是那么纠结,解释下吧.最近开始接触Android开发,开发环境的部署就不说了,各种费劲凿墙.好不容易搞定了,调试又来了问题.Android设备老旧,效率低下:AVD就是更不用说了,一张张图片看过去.好在有神器,Genymotion! 在此强力推荐~!性能甩各种android设备好几条街. 可是问题来了,本人有个癖好,喜欢将各种开发环境分别放到不同的虚拟机里,这样互相不会干扰,而且可以带来带去.但是Genymotion在虚拟机里用不了~,提示需要OpenGL2.0版本以上的支持.可

Android开发解决加载图片OOM问题(非常全面 兼顾4.0以下系统)(by 星空武哥)

转载请标明:http://blog.csdn.net/lsyz0021/article/details/51295402 我们项目中经常会加载图片,有时候如果加载图片过多的话,小则导致程序很卡,重则OOM导致App挂了,今天翻译https://developer.Android.com/training/displaying-bitmaps/index.html,学习Google高效加载大图片的方法. 图片有各种形状和大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库

Android开发:Eclipse中SqliteManager插件使用

通常开发Android的时候要使用到数据库操作,会遇到下面小问题: 数据库文件在哪?怎样訪问或操作? 能够通过:打开DDMS->File Explorer看到的sqlite数据库在eclipse,然后在文件夹/data/data/package_name/databases下找到. 可是我们仅仅能看到.db文件,根本看不到里面的表格数据,更别说操作数据啦. 当然,我们能够把.db文件导出来,用数据库操作工具(如SQLite Expert)来操作数据,这是不是非常麻烦呀,今天我们就能够用一个简单的