进入Activity不让其自动弹出虚拟键盘

时间:2022-07-23 00:57:03

一、问题描述

若Activity中含有EditText控件,如果没有做特别的调整,那么每次进入该Activity,EditText空间都会自动获取脚垫,然后弹出虚拟的键盘,使页面变得拥挤。Android这样设计的目的可能是为了减少用户点击屏幕的次数,所以默认是这样。但是有些需求,并不是一进入Acticity就要弹出键盘,例如QQ的聊天页面

二、问题解决

有两种解决方案:

1. 在Activity的onCreat()方法中添加以下代码:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

2. 在AndroidManifest.xml加入以下代码:

<activity
...
android:windowSoftInputMode="stateHidden" >

三、问题的引申:

解決弹出Dialog又再自动弹出虚拟键盘如果Dialog中含有EditorText,这样和上述问题类似,那么解决方式也类似:

    AlertDialog dialog =new AlertDialog.Builder(this).setView(et_url).create();
dialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
dialog.show();

题外话:
第一次在CSDN,上面写技术博客,心情还是有些小激动的。我在工作中有记笔记的习惯,基本上所有的笔记都记录在了有道云上,我打算把笔记做一番整理,然后写到CSDN博客中,这样对自己的知识是一个梳理,也能分享自己的一些心得。