Android 通过父布局抢占Edittext焦点实现刚进入Activity不弹出软键盘

Android 进入Activity禁止弹出软键盘输入法及stateHidden和stateAlwaysHidden的区别这篇文章中我们通过设置Activity的android:windowSoftInputMode属性为stateHidden或者stateAlwaysHidden实现了进入Activity不马上弹出软键盘的功能,今天我们介绍另一种方法,通过父布局抢占Edittext焦点,从而不然软键盘弹出。

实现代码如下所示

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true"
android:focusable="true">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>

Click and drag to move

马上在我的魅族MX5手机上运行一下,发现软键盘是收起来了,但是却是在弹出后马上又收起来的。看起来就是软键盘闪了一下马上消失,这样的用户体验是很不好的。

既然这样的体验不好为什么网上一搜还是有很多人推荐这样的方法,唯一的可能就是他们看到的结果和我不一样,他们的手机上的运行结果可能确实是软键盘没有弹出来。

我马上用用Android模拟器试了下,发现模拟器上确实未弹出软键盘,不像在MX5手机上那样弹出又马上消失。

总结

这种方法并不能保证对所有型号手机使用,所以不推荐使用。还是推荐Android官方推荐的方法,通过设置android:windowSoftInputMode属性来实现,具体参考这篇文章Android 进入Activity禁止弹出软键盘输入法及stateHidden和stateAlwaysHidden的区别