Android Studio中是否有类似隐藏状态栏的简便方法隐藏导航栏?
导航栏自动隐藏(触摸显示后自动消失)实现方案
针对你需要实现和状态栏相同的"触摸显示、1-2秒自动消失"的导航栏效果,提供两种简便方案:
一、主题配置法(API 30+ 适用)
直接在themes.xml的App主题中添加以下配置,和状态栏的配置方式类似:
<!-- 确保系统栏背景可绘制 --> <item name="android:windowDrawsSystemBarBackgrounds">true</item> <!-- 关闭导航栏半透明 --> <item name="android:windowTranslucentNavigation">false</item> <!-- 设置导航栏为透明,避免显示黑边 --> <item name="android:navigationBarColor">@android:color/transparent</item> <!-- 隐藏导航栏,触摸底部区域会临时显示,几秒后自动隐藏 --> <item name="android:windowHideNavigationBar">true</item>
这种方式无需编写Java/Kotlin代码,配置完成后所有使用该主题的页面都会生效。
二、代码配置法(兼容API 19+)
如果你的App需要兼容更低版本(API 19及以上),可以在Activity的onCreate方法中添加以下代码:
import android.view.View import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 配置系统UI可见性,实现沉浸式粘性隐藏 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY } }
SYSTEM_UI_FLAG_IMMERSIVE_STICKY是实现"触摸显示后自动消失"的核心Flag,触摸屏幕底部区域时导航栏会临时弹出,无操作1-2秒后自动隐藏。- 如果需要在多个Activity中生效,可以封装成BaseActivity统一实现。
注意事项
- 两种方案可以结合使用:API30+用主题配置,低版本通过代码兼容。
- 确保你的App主题继承自Material Components或AppCompat主题,避免配置不生效。
内容的提问来源于stack exchange,提问作者Joy Karmoker
相关产品推荐
相关产品推荐

