安卓弹出软键盘时隐藏底部导航
问题描述
安卓项目中使用 ahbottomnavigation 或者 BottomNavigationView 底部导航,当屏幕弹出输入键盘时,底部导航会跟随在键盘上面,感觉不是很美观,尝试在出现键盘时隐藏底部导航。
AndroidManifest.xml 内容如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.newest">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="false"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
解决方法
参考 android:windowSoftInputMode 的文档说明。
值 | 描述 |
---|---|
“stateUnspecified ” | 不指定软键盘的状态(隐藏还是可见)。系统会选择合适的状态,或依赖主题中的设置。 这是对软键盘行为的默认设置。 |
“stateUnchanged ” | 当 Activity 转至前台时保留软键盘最后所处的任何状态,无论是可见还是隐藏。 |
“stateHidden ” | 当用户选择 Activity 时(换言之,当用户确实是向前导航到 Activity,而不是因离开另一 Activity 而返回时)隐藏软键盘。 |
“stateAlwaysHidden ” | 当 Activity 的主窗口有输入焦点时始终隐藏软键盘。 |
“stateVisible ” | 在正常的适宜情况下(当用户向前导航到 Activity 的主窗口时)显示软键盘。 |
“stateAlwaysVisible ” | 当用户选择 Activity 时(换言之,当用户确实是向前导航到 Activity,而不是因离开另一 Activity 而返回时)显示软键盘。 |
“adjustUnspecified ” | 不指定 Activity 的主窗口是否通过调整尺寸为软键盘腾出空间,或者是否通过平移窗口内容以在屏幕上显示当前焦点。根据窗口的内容是否存在任何可滚动其内容的布局视图,系统会自动选择其中一种模式。如果存在这种视图,系统会调整窗口尺寸,前提是可通过滚动操作在较小区域内看到窗口的所有内容。 这是对主窗口行为的默认设置。 |
“adjustResize ” | 始终调整 Activity 主窗口的尺寸,以为屏幕上的软键盘腾出空间。 |
“adjustPan ” | 不通过调整 Activity 主窗口的尺寸为软键盘腾出空间。相反,窗口的内容会自动平移,使键盘永远无法遮盖当前焦点,以便用户始终能看到自己输入的内容。这通常不如调整窗口尺寸可取,因为用户可能需关闭软键盘才能进入被遮盖的窗口部分,并与之进行交互。 |
修改 android:windowSoftInputMode
为 adjustPan
即可。
<activity android:name=".MainActivity"
android:windowSoftInputMode="adjustPan">