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

很好用的隐藏和显示输入法,因为dialog中自定义的EditText显示输入法的问题弄了我好长时间,特此将代码拷贝下来,顺带说明下,在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题。

EditText的输入法显示和隐藏

<pre name="code" class="java">private EditText mSearchEdit;

mSearchEdit = (EditText) findViewById(R.id.edit_search);

public void getFocus(){//显示输入法 if(mSearchEdit!=null){ mSearchEdit.requestFocus(); InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(mSearchEdit, 0); } } public void removeFocus(){//隐藏输入法
if(mSearchEdit!=null){ mSearchEdit.setText(null); InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mSearchEdit.getWindowToken(), 0);//有一个InputMethodManager.什么的但是好用会切换输入法而不是隐藏

} }


顺带附上AlertDialog中的EditText无法调出输入法的问题

在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题。

解决方法,有两种方法,

第一种方法是把AlertDialog换成Dialog,使用自定义的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);
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上点击,可以调出软键盘,输入法了。

时间: 2024-11-05 14:44:20

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

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

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

如何获取一个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开发 解决AlertDialog中的EditText无法调出输入法的问题

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

显示/隐藏Mac系统中所有的隐藏文件

显示: 在终端输入:defaults write com.apple.finder AppleShowAllFiles YES 隐藏: 在终端输入:defaults write com.apple.finder AppleShowAllFiles NO 然后重启Finder即可(先点击左上角的苹果图标,再选强制退出,然后选中Finder,点击重新开启) 亲测可用

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

很奇怪的是,如果你用原生的AlertDialog,通过setView(new EditText())的方法添加输入框,永远都能弹出输入法: 而在我们自定义AlertDialog中,经常会遇到弹不出输入法的问题,这里我分为2中情况: 一. 在Activity中,自定义AlertDialog中的EditText弹不出输入法 方法一:  在继承AlertDialog, onCreate()方法中, 设置如下: requestWindowFeature(WindowManager.LayoutParam

Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究

在项目开发中,用到编辑框的地方经常涉及到要监听或者控制软键盘的显示/隐藏状态.本以为这是很容易解决的一个小问题,没想到当初碰到这个问题才明白还得花点小心思才能整好.现将针对软键盘的显示/隐藏状态的监听/监控方法做一些总结,以备后用. 一.点击空白处隐藏软键盘 这是具有编辑框焦点的页面对输入法软键盘状态监听的一般需求和解决方法. 首先获得InputMethodManager:        InputMethodManager manager = (InputMethodManager) getS

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

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

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

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

关于JSP页面中根据checked的值显示隐藏行的问题

这是一个查询页面,在我的JSP页面中有一个单选框,C标签根据从数据库中获取到的值选择checked=“checked”与否: 当单机单选框时会调用一个showme()方法,选中则显示隐藏的两行,未选中则隐藏.这两行的<tr>里面都给了一个class="yinc"用来在Jquery中的showme()方法控制隐藏与否: 好了背景介绍到这里,接下来进入正题.期初我将方法写在引用的JS文件里如同这样: 但是实现的效果就是在浏览器中第一次加载页面的时候,数据库中有值所以单选框勾选了