android studio 关闭软键盘后如何隐藏导航栏?

问题描述 投票:0回答:0

我目前正在使用 Android Studio 开发 Android 应用程序,但我面临着一个似乎无法解决的持续问题。当我在与“EditText”视图交互时打开软键盘时,就会出现问题。打开软键盘后,导航栏会弹出,关闭键盘后又无法隐藏了。

我尝试了几种在线解决方案来解决这个问题。最初,我使用应用于布局的标志,但遇到了一个问题,即每当用户打开键盘时标志都会被清除。为了解决这个问题,我实现了一个全局监听器,甚至硬编码了一个标志来跟踪键盘关闭,但这在某些设备上被证明是无效的。我还尝试调用 onBackPressed 方法内的标志,但问题仍然存在。最近,我尝试使用 WindowInsetsController,但不幸的是问题仍然存在。下面是当前在 Activity 的 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>
java android keyboard uinavigationbar
© www.soinside.com 2019 - 2024. All rights reserved.