android输入法自动弹出
① Android中EditTex焦点设置和弹不弹出输入法的问题
在网上看了些例子都不够全面,在这里全面总结下。
一:EditText为什么会默认弹出输入法?
同样的代码,碰到有EditText控件的界面时有的机子会弹出输入法,有的机子不会弹出。不好意思,这问题我也一头雾水,谁知道可以告诉我,否则我就把这个问题留下来,以后研究android源码时再搞个清楚。但是...我有解决方案。
二:默认弹出和默认关闭输入法的解决方案。
1.默认关闭,不至于进入Activity就打开输入法,影响界面美观。
①在布局文件中,在EditText前面放置一个看不到的LinearLayout,让他率先获取焦点:
<LinearLayout
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="0px"
android:layout_height="0px"/>
②方法二:先看一个属性android:inputType:指定输入法的类型,int类型,可以用|选择多个。取值可以参考:android.text.InputType类。取值包括:text,textUri,
phone,number,等.
Android SDK中有这么一句话“If
the given content type is TYPE_NULL
then a soft keyboard will not be displayed for this text view”,
先将EditText的InputType改变为TYPE_NULL,输入法就不会弹出.然后再设置监听,再重新设置它的InputType.
editText.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int inType = editText.getInputType(); // backup the input type
editText.setInputType(InputType.TYPE_NULL); // disable soft input
editText.onTouchEvent(event); // call native handler
editText.setInputType(inType); // restore input type
return true;
}
});
2.默认弹出。有时候按照需求可能要求默认弹出输入法。方案如下:
EditText titleInput = (EditText) findViewById(R.id.create_edit_title);titleInput.setFocusable(true);
titleInput.requestFocus();
onFocusChange(titleInput.isFocused());
private void onFocusChange(boolean hasFocus)
{
final boolean isFocus = hasFocus;
(new Handler()).postDelayed(new Runnable() {
public void run() {
InputMethodManager imm = (InputMethodManager)
titleInput.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if(isFocus)
{
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
else
{
imm.hideSoftInputFromWindow(titleInput.getWindowToken(),0);
}
}
}, 100);
}
转载
② android dialog 怎样自动弹出输入法
在Dialog显示以后,让可编辑的控件requestFocus一下,这样,就可以自动弹出输入法了!
③ 安卓手机输入法老自动切换成默认的怎么办
可以将手机默认输入法改成所需的输入法。方法:
在“设置”中,找到“语言和输入法”,点击
在“键盘和输入法”一栏找到“默认”,点击打开
在所有跳出的已安装输入法中选择所需的输入法,点击即可完成设置
④ android怎样控制输入法的弹出和隐藏
1.让EditText失去焦点,使用EditText的clearFocus方法
2. 强制隐藏Android输入法窗口,在IME类中我们通过
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 实例化输入法控制对象,通过hideSoftInputFromWindow来控制,其中第一个参数绑定的为需要隐藏输入法的EditText对象,比如imm.hideSoftInputFromWindow(etAndroid123.getWindowToken(), 0);
⑤ android里面怎样强制弹出键盘啊
Android软键盘强制弹出及隐藏输入法的方法:
很多应用中对于一个界面比如进入搜索界面或者修改信息等等情况,为了用户体验应该自动弹出软键盘而不是让用户主动点击输入框才弹出(因为用户进入该界面必然是为了更改信息)。具体实现这种效果的代码如下:
java代码
EditTexteditText.setFocusable(true);
editText.setFocusableInTouchMode(true);
editText.requestFocus();
InputMethodManager inputManager =
(InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText,0);
首先要对指定的输入框请求焦点。然后调用输入管理器弹出软键盘。
警告:对于刚跳到一个新的界面就要弹出软键盘的情况上述代码可能由于界面为加载完全而无法弹出软键盘。此时应该适当的延迟弹出软键盘如998毫秒(保证界面的数据加载完成)。实例代码如下:
java代码:
Timer timer =newTimer();
timer.schele(newTimerTask()
{
publicvoidrun()
{
InputMethodManager inputManager =
(InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText,0);
}
},
998);
⑥ 如何实现android EditText允许输入字母和数字,同时默认弹出数字键盘
这个问题看似简单,不过由于Android输入法的开放性,许多输入法相关的参数设置是由第三方输入法来实现的,而第三方输入法众多、实现不一,导致这个问题变得很复杂。
结论是,目前来看,并没有直接的方法,可以对所有输入法实现上述需求。
不过针对这个问题,我们有以下几种处理方案:
设置android:digits属性,允许输入数字和字母。
设置android:inputType为"number",将键盘切换为数字键盘。
这里的关键是,虽然单独设置android:inputType="number"时,只允许输入数字;但同时设置android:inputType和android:digits时,允许输入的字符是以android:digits为准的。
当输入法本身的UI允许在数字键盘、字母键盘间切换时,该方案是有效的;但是一些输入法的数字键盘不能切换到字母键盘,该方案失效;特别是,Android5.0的原生输入法就是如此,数字键盘UI没有提供切换到其他键盘的按钮。
虽然该方案对一些输入法(尤其是英文输入法)无效,但是中文输入法基本都是有效的。如果APP仅在国内用的,这个方案够用了
方案一失效的主要原因是,输入法界面中没有提供切换键盘的按键,所以我们可以自己添上按键。
带来的问题是,自己添加按键,很难与输入法保持统一的UI风格;而当输入法本身有键盘切换按键时,这个方案是画蛇添足,既怪异又不美观。 所以这个方案在UI上有严重缺陷,并不实用。
效果图如下:
Activity如下:
activity_main.xml如下:
自定义键盘可以彻底解决问题,是最完美的方案;但是复杂度有点高。
默认弹出数字键盘真的有那么重要么?没有的话,干脆不要折腾了,StackOverflow上那么多人已经证明这个问题无完美解了。
⑦ 为什么android手机按菜单键老出现输入法界面
长按键盘界面的“拼”字键,就能在弹出的菜单中选择切换手写和笔画功能了。点击或按住不放虚拟键盘左下角的“英文”,就会弹出输入法了。 点击Y
⑧ android4.4 framework层怎样阻止弹出软键盘(输入法)
我建议你先下载一个任意的第三方输入法 然后按照步骤安装 屏蔽原机自带输入法 然后删除第三方输入法 这时候 你再打开要输入的一个界面 光标点击空白处 你会发现没有任何软键盘弹出 希望对你有帮助