做ListView搜索的时候遇到了这个问题,软键盘总是自动弹出而且把底部的TabBar顶到屏幕中部,这里是两个问题:
1、软键盘顶起TabBar;
2、进入该界面时软键盘自动弹起。
关于问题2,之前遇到过进入一个表单Activity时EditText控件自动获得焦点弹出软键盘,当时的解决方法是在EditText之前加入了一个不可见层来获得焦点:(该方法是解决普通布局中自动弹出软键盘的方法)。
<LinearLayout
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true" />
当时的问题能够得到解决,这次的问题在于我的EditText设置的属性inputType="number" ,但是自动弹出的是英文键盘,所以其实不是EditText获得的焦点,是什么不得而知。这个方法没有解决我的问题2。先放起来解决问题一。
再来说问题一,解决方法在网上也找到了很多说法,其实最终只是要在AndroidManifest.xml
设置一下相应activity的android:windowSoftInputMode
这个属性,是设置活动主窗口与软键盘窗口如何交互的问题。
关注两个属性值:
"stateHidden" :当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。
"adjustPan" : 该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。
如果只是出现软键盘顶起的情况,下面的代码应该能够解决问题:
android:windowSoftInputMode="stateVisible|adjustPan"
如果像我一样同时遇到这两个问题,那就要用下面的属性了:
android:windowSoftInputMode="adjustPan|stateHidden"