首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在kotlin中隐藏导航栏、状态栏和动作栏

在 Kotlin 中,你可以通过多种方式隐藏导航栏、状态栏和动作栏。以下是一些常见的方法:

1. 隐藏状态栏和导航栏

你可以使用 WindowInsetsController 来隐藏状态栏和导航栏。这种方法适用于 Android 11(API 级别 30)及以上的设备。

示例代码

代码语言:javascript
复制
import android.os.Build
import android.os.Bundle
import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            window.insetsController?.let {
                it.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
                it.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
            }
        } else {
            @Suppress("DEPRECATION")
            window.decorView.systemUiVisibility = (
                View.SYSTEM_UI_FLAG_FULLSCREEN
                or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            )
        }
    }
}

2. 隐藏动作栏

你可以使用 supportActionBar 来隐藏动作栏。

示例代码

代码语言:javascript
复制
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 隐藏动作栏
        supportActionBar?.hide()
    }
}

3. 在布局文件中隐藏状态栏和导航栏

你还可以在布局文件中使用 android:fitsSystemWindows 属性来隐藏状态栏和导航栏。

示例布局文件

代码语言:javascript
复制
<!-- res/layout/activity_main.xml -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <!-- 你的布局内容 -->

</RelativeLayout>

4. 在主题中隐藏状态栏和导航栏

你可以在应用的主题中设置全屏模式来隐藏状态栏和导航栏。

示例主题文件

代码语言:javascript
复制
<!-- res/values/styles.xml -->
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- 全屏模式 -->
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

然后在 AndroidManifest.xml 中应用这个主题:

代码语言:javascript
复制
<!-- AndroidManifest.xml -->
<application
    android:theme="@style/AppTheme">
    <!-- 其他配置 -->
</application>

5. 结合使用

你可以结合以上方法,根据需要在不同的场景中隐藏状态栏、导航栏和动作栏。

示例代码

代码语言:javascript
复制
import android.os.Build
import android.os.Bundle
import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 隐藏动作栏
        supportActionBar?.hide()

        // 隐藏状态栏和导航栏
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            window.insetsController?.let {
                it.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
                it.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
            }
        } else {
            @Suppress("DEPRECATION")
            window.decorView.systemUiVisibility = (
                View.SYSTEM_UI_FLAG_FULLSCREEN
                or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            )
        }
    }
}

通过以上方法,你可以在 Kotlin 中隐藏导航栏、状态栏和动作栏,以实现全屏显示或其他自定义的用户界面效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Android经典面试题之Kotlin如何隐藏DialogFragmentDialog的导航

    DialogFragment隐藏导航 在 Android ,使用 DialogFragment 显示对话框时,如果您希望隐藏系统导航状态栏导航键),可以通过设置相关的系统 UI 标志来实现。...以下是一个完整的例子,展示了如何在 DialogFragment 隐藏系统导航(使用 Kotlin): import android.os.Bundle import android.view.View...这种方法允许您的 DialogFragment 在显示时全屏,并隐藏状态栏导航。...Dialog隐藏导航 在 Android ,如果想在 Dialog 隐藏系统导航(包括状态栏底部的导航键),可以通过设置窗口属性来实现。...systemUiVisibility 属性用于隐藏系统导航状态栏。 通过这些设置,当显示 Dialog 时,它将隐藏系统导航状态栏,实现全屏显示。

    13910

    iOS导航切换界面时隐藏显示

    引 现如今很多App的一些模块,尤其是个人中心模块,界面设计已经习惯于不保留导航,而是直接将界面背景覆盖到状态栏,比如QQ的个人信息界面: 没有传统的导航之后会好看很多,但是回到或者去往别的页面时...,直接在 viewWillAppear viewWillDisappear 方法导航进行显示隐藏就可以了,为了到达比较平滑的效果,建议对是否动画的参数选择YES,否则显示界面后就会瞬间出现导航...,在通过Tabbar切换模块时就会出现一个很快的隐藏导航的动画,这个很烦,我尝试了很多方法,试图在 UINavigationControllerDelegate UITabBarControllerDelegate...这个方法是直接隐藏了整个导航,所以如果要保存导航的一些返回按钮以及其他自定义的按钮,就需要自己在界面上去模拟添加,如果不想这么麻烦,也可以不隐藏导航,而是将导航的背景视图设为透明的: [...这里有一篇文章实现了:传送门:导航的平滑显示隐藏 - 个人页的自我修养(1) ,不过作者使用swift实现的,用到了extension,其实也就是OC下的category,之后我再研究一下OC下的实现好了

    3.9K30

    Android实现系统状态栏隐藏显示功能

    尤其视频类APP,需要实现切换到横屏后,隐藏系统状态栏,全屏显示,以实现看更大画面的视频。当切换回竖屏后,又显示状态栏。那么如何实现呢? 网上流传着很多种做法。...WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 3、通过View的setSystemUiVisibility方法 4、通过如下代码实现状态栏隐藏显示...) //显示状态栏 在我的项目中是要实现如下需求:在当前Activity,切换到横屏后,不能销毁Activity再重新初始化,并且实现隐藏系统状态栏,全屏显示;当切换回竖屏后,又显示状态栏。...(导航)。...总结 以上所述是小编给大家介绍的Android实现系统状态栏隐藏显示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

    4.4K40

    Android实战经验分享之如何获取状态栏导航的高度

    在 Android 应用开发,有时我们需要知道状态栏导航的高度,以便在布局中进行调整。获取这些高度的方法有几种,每种方法在准确性兼容性方面有所不同。...下面我们将详细介绍这几种方法,并提供 Kotlin 代码示例。 获取状态栏高度的方法 方法一:通过资源名称获取 这种方法最常见,也最推荐,具有较高的准确性兼容性。...return result } 方法二:通过 WindowInsets 获取 这种方法需要 API 20 (Android 4.4W) 以上,但在较新版本的 Android(API 21及以上)更为准确...: 0 } 获取导航高度的方法 方法一:通过资源名称获取 这种方法获取状态栏高度的方式类似。...: 0 } 对比总结 1、 通过资源名称获取: 优点:简单、代码兼容性好。 缺点:可能受某些定制 ROM 的影响,准确性在极少数情况下可能有问题。

    19210

    Android Bitmap的截取及状态栏隐藏显示功能

    1.项目中需要分享的界面长这个样子,大家可以看到,状态栏、标题、中间需要分享的部分、底部按钮 ?...2.需要分享的图片长这个样子,底部状态栏、标题底部按钮全部隐藏,接下来我就用最笨的方法开始操作了 ?...3.首先是状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //隐藏状态栏 getWindow().clearFlags...PS:下面看下Android 显示隐藏状态栏实例代码 Android 显示隐藏状态栏,小说阅读界面要用到 /** * 显示隐藏状态栏,全屏不变,只在有全屏时有效 * @param enable...).clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } 总结 以上所述是小编给大家介绍的Android Bitmap的截取及状态栏隐藏显示功能

    1.1K10

    android Compose沉浸式设计导航的处理

    简单写一篇文章捕获一下焦点 Material Design风格的顶部底部导航 ComposeMaterial Design风格的设计我们的做法如下: 1、使用Scafoold作为页面的顶级,Scafoold...承载topbarbottombar分别作为顶部导航底部导航。...2、调用WindowCompat.setDecorFitsSystemWindows(window, false)方法让我们的布局超出状态栏底部导航的位置 3、使用ProvideWindowInsets...包裹布局,使我们可以获取到状态栏底部导航的高度(不包裹无法获取状态栏底部导航高度) 4、手动处理顶部底部导航让页面适应屏幕 界面设计 TopBar设计 实现方式 因为使用WindowCompat.setDecorFitsSystemWindows...ui状态 处理前: 处理后: 结论是经过我们的处理后解决了底部导航的遮挡问题 状态栏底部导航颜色的处理 状态栏底部导航颜色设置 依赖 implementation "com.google.accompanist

    3.1K20

    iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

    不要创建自定义状态栏。用户依赖系统默认状态栏的一致性。就算你可能会在应用隐藏它,也不宜定制一个新的UI来代替原有系统状态栏。 避免滚动内容直接透过状态栏显示。...千万千万,避免在状态栏后面叠加会分散注意力的内容。尤其是,你不能让用户觉得轻击状态栏之后可以获取内容或激活你的应用的控件。 隐藏状态栏时请慎重。由于状态栏是透明的,通常情况下不需要隐藏它。...始终隐藏状态栏意味着用户必须退出你的应用才能知道现在的时间,或者了解当前环境下是否有Wi-Fi连接。 在用户全屏观看媒体时,考虑隐藏状态栏以及所有页面UI。...导航,工具标签 可以操作当前app视图中的对象的各种控件或对象 (默认情况下, 浮出层的表格视图,导航工具的背景都是透明的,这样会让浮出层的毛玻璃效果展示出来) 在横屏的情况下,动作列表总是出现在浮出层里...默认情况下,竖屏方向时只会展示右侧窗格,因此你需要向用户提供一个按钮(通常位于导航上)来让用户唤起隐藏主窗格。对分视图控制器也支持轻扫手势来执行呼出隐藏动作

    10.1K51

    关于 Android 的各种 Bar “透明状态栏”的一些知识

    此篇文章主要讲解关于沉浸式状态栏,程序全屏分清状态栏、ActionBar、ToolBar 的一些知识内容。主要是讲解如何适配状态栏。...screnn_stable.png 5.沉浸模式 // 所谓沉浸模式就是一开始我们的 UI 布局是全屏的,状态栏虚拟导航键也是隐藏的,当我们需要的系统 UI 的时候,从状态栏的位置下拉就可以出现系统...,导航状态栏就会出来,过一会就会消失,类似于游戏中那样。...View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:作用使 UI 布局延伸到导航,全屏显示,导航消失。...表示是否保留系统的空间。可以在布局属性设置。作用给控件添加 "fitsSystemWindows" 属性相同。

    2.7K10

    最新iOS设计规范三|3大界面要素:(Bars)

    例如,当人们查看全屏照片时,“照片”会隐藏导航其他界面元素。如果你的APP也用到了这个功能,切记要让用户使用简单的手势(点按)来恢复导航导航标题 在导航显示当前视图的标题。...在iOS 13及更高版本,可以通过删除导航的阴影来隐藏导航的底部边框(当滑动内容区域时,边框会自动重新出现)。无边框样式在大标题导航效果很好,因为它增强了标题内容之间的联系感。...有几种常见的技术可以做到这一点: · 在APP中使用导航,该导航会自动显示状态栏背景,并确保内容不会显示在状态栏背后 · 在状态栏背后显示自定义图像,渐变色或纯色 · 在状态栏背后放置模糊的视图...当用户尝试关注媒体时,状态栏可能会分散注意力。暂时隐藏这些元素以提供更沉浸的体验。例如,当用户浏览全屏照片时,“照片”应用程序将隐藏状态栏其他界面元素。 ? 避免永久隐藏状态栏。...工具包含用于执行与当前上下文有关的动作的按钮,例如创建项目,删除项目,添加注释或拍照。标签工具永远不会在同一视图中同时出现。 提供相应的工具按钮。

    9.9K10

    Flutter沉浸式状态栏AppBar导航仿咸鱼底部凸起导航效果

    如下图:状态栏是指android手机顶部显示手机状态信息的位置。 android 自4.4开始新加入透明状态栏功能,状态栏可以自定义颜色背景,使titleBar能够状态栏融为一体,增加沉浸感。...如上图Flutter状态栏默认为黑色半透明,那么如何去掉这个状态栏的黑色半透明背景色,让其标题颜色一致,通栏沉浸式,实现如下图效果呢?且继续看下文讲述。 ? ?...在Google I/O 2017,Google 宣布 Kotlin 取代 Java 成为 Android 官方开发语言。...语言,则运行如下命令创建项目即可 flutter create -a java flutter_app 如果是java语言模式下,修改沉浸式状态栏方法上面同理 MainActivity.java路径:...到此这篇关于Flutter沉浸式状态栏/AppBar导航/仿咸鱼底部凸起导航效果的文章就介绍到这了,更多相关Flutter沉浸式状态栏导航 仿咸鱼底部凸起导航内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

    5.2K41

    笔记53 | 管理系统UI(一)

    图1展示了一个图库的图片,界面的系统都已被淡化(需要注意的是图库应用完全隐藏状态栏,而不是淡化它);注意导航(图片的右侧)上变暗的白色的小点,他们代表了被隐藏导航操作。 ?...Bar API 指南 Android Design Guide 本课程将教您如何在不同版本的Android下隐藏状态栏。...这个方法防止了状态栏隐藏展示的时候内容区域的大小变化。...隐藏导航 这节课将教您 在4.0及以上版本隐藏导航 让内容显示在导航之后 本节课程将教您如何对导航进行隐藏,这个特性是Android 4.0()版本引入的。...即便本小节仅关注如何隐藏导航,但是在实际的开发,你最好让状态栏导航同时消失。

    1.4K40

    iOS状态栏使用总结

    目录: 一、状态栏导航 二、设置状态栏显隐与字体样式 三、设置状态栏背景色 四、启动页隐藏状态栏 五、状态栏导航相关的常用宏定义 相关文章:iOS导航的使用总结 一、状态栏导航 状态栏...((44) iPhoneX设备出现以后,状态栏的高度变为44,导航部分总高度(88) = 状态栏(44) + 导航栏内容高度(44) 二、设置状态栏显隐与字体样式 iOS状态栏可以设置显示隐藏,也可以设置文字的颜色...,代码的位置很重要;在AppDelegate写入可以设置整个App页面的状态栏样式; 如果需要单独设置其中一个页面隐藏状态栏,需要在进入页面时设置隐藏,退出页面时设置显示,以保证不影响其他页面的状态栏样式...//状态栏导航背景色为白色,状态栏文字为黑色 self.navigationController.navigationBar.barStyle = UIBarStyleDefault; //状态栏导航背景色为黑色...,状态栏文字为白色 self.navigationController.navigationBar.barStyle = UIBarStyleBlack; 三、设置状态栏背景色 iOS7之后的状态栏导航融合在一块

    1.9K30

    Android 沉浸式解析轮子使用

    从 Android4.4 以上版本才是真正的可以设置沉浸式体验,但也仅仅是操作状态栏导航的显示与隐藏。...你可以只使用其中的一个,但是一般情况下你需要同时隐藏状态栏导航以达到沉浸的效果。...style> 二、ZanImmersionBar 轮子的原理使用 在实际开发过程,我们不仅仅只会遇到以上三种版本兼容问题,还需要考虑:不同手机品牌,动态该状态栏背景,以及 Fragment 需要有自己的状态栏颜色场景...2.1.1 收集 bar 参数 我们使用一个对象用于存储用户设置的 bar 参数,这些参数有状态栏导航颜色、透明度、显示隐藏等等,通过该对象的参数来分别设置 public class BarParams...,以及是否需要对异形屏适配,最后才是在实际开发需求状态栏导航处理。

    3.2K10

    笔记54 | 管理系统UI(二)

    当这个标签与 SYSTEM_UI_FLAG_HIDE_NAVIGATION SYSTEM_UI_FLAG_FULLSCREEN一起使用的时候,导航状态栏就会隐藏,让你的应用可以接受屏幕上任何地方的触摸事件...你可以只使用其中的一个,但是一般情况下你需要同时隐藏状态栏导航以达到沉浸的效果。...用其他的UI标签( SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION SYSTEM_UI_FLAG_LAYOUT_STABLE)来防止系统隐藏时内容区域大小发生变化是一种很不错的方法...你也需要确保Action Bar其他系统UI控件同时进行隐藏。下面这段代码展示了如何在不改变内容区域大小的情况下,隐藏与显示状态栏导航。...UI同步是一种很好的实践方式,比如当状态栏显示或隐藏的时候进行ActionBar的显示隐藏等等。

    1.1K40

    沉浸式管理:让你的APP更优雅

    详细介绍 解决状态栏布局顶部重合 上面已经说了,沉浸式原理就是使整个布局延伸到状态栏导航,既然这样必然导致一个问题,就是状态栏布局顶部重叠,直接看图 ?...修改状态栏字体颜色为深色 ? ? 设置状态栏导航透明度 ? ? ? 解决EditText软键盘的问题 ? ?...android 5.0以上核心代码 Android自5.0起,为我们提供了设置状态栏导航颜色的API,我们可以自己设置状态栏导航的颜色。...android 4.4核心代码 在4.4里就没有5.0以上这些api了,只能设置透明状态栏导航,而且设置透明导航之后,底部布局会被导航遮住,那怎么办呢?...状态栏导航隐藏 android 4.1以上支持状态栏导航隐藏 ? 总结 至此,ImmersionBar库的用法与原理都讲完了。

    1.7K30
    领券