我目前正在使用安卓工作室开发一款安卓应用程序,我面临着一个似乎无法解决的持续问题。当我在与“EditText”视图交互时打开软键盘时,问题就出现了。打开软键盘后,导航栏弹出,关闭键盘后无法再次隐藏。
我已经尝试了几种在线解决方案来解决这个问题。最初,我使用了应用于布局的标志,但遇到了一个问题,每当用户打开键盘时,标志都会被清除。为了解决这个问题,我实现了一个全局监听器,甚至硬编码了一个标志来跟踪键盘闭合,但事实证明这在某些设备上是无效的。我还尝试调用onBackPressed方法内部的标志,但问题仍然存在。最近,我尝试使用WindowInsetsController,但不幸的是,问题仍然存在。以下是当前在活动的onCreate方法内部调用的方法的代码片段,用于隐藏资产:
public static void hideAssets(final Activity activity) {
WindowCompat.setDecorFitsSystemWindows(activity.getWindow(), false);
WindowInsetsControllerCompat windowInsetsControllerCompat = WindowCompat.getInsetsController
(activity.getWindow(), activity.getWindow().getDecorView());
windowInsetsControllerCompat.hide(WindowInsetsCompat.Type.systemBars());
windowInsetsControllerCompat.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
}
这是我的应用程序的两个主题(其中一个用于启动/启动屏幕):
<resources>
<!-- Default Theme of App -->
<style name="Theme.Eleanor" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="colorPrimary">#000F2E</item>
<item name="colorPrimaryVariant">#000F2E</item>
<item name="colorOnPrimary">@color/white</item>
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
<!-- Theme for the Launch Screen -->
<style name="Theme.Launch" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="colorPrimary">#000F2E</item>
<item name="colorPrimaryVariant">#000F2E</item>
<item name="colorOnPrimary">@color/white</item>
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowBackground">@drawable/launch_screen</item>
</style>
</resources>
这是我的android清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/Theme.Eleanor">
<activity android:name=".activity.SplashActivity"
android:screenOrientation="portrait"
android:exported="true"
android:theme="@style/Theme.Launch">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.SearchActivity"
android:screenOrientation="portrait"
android:exported="true">
</activity>
<activity android:name=".activity.ControlActivity"
android:screenOrientation="portrait"
android:exported="true">
</activity>
</application>
</manifest>