【问题标题】:Android transparent status bar and custom view insetsAndroid 透明状态栏和自定义视图插图
【发布时间】:2018-08-23 12:35:17
【问题描述】:

我想在透明状态栏后面绘制我的布局。 我正在使用指挥的控制器来实现我的应用程序的屏幕,它们都有白色的状态栏,但需要它是完全透明的。进入此控制器时我不能使用 windowTranslucentStatus 标志,因为它会导致我的布局在控制器进入并存在屏幕时稍微跳跃。我认为自定义窗口插图可以帮助在状态栏后面绘制一个控制器而不会发生布局跳跃,但我不知道如何做到这一点。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: android statusbar transparent windowinsets


    【解决方案1】:

    在布局的根视图中使用android:fitsSystemWindows="true"

    fitsSystemWindows 是做什么的?

    系统窗口是系统正在绘制非交互式(在状态栏的情况下)或交互式(在导航栏的情况下)内容的屏幕部分。 大多数情况下,您的应用不需要在状态栏或导航栏下进行绘制,但如果这样做:您需要确保交互元素(如按钮)不会隐藏在它们下方。这就是 android:fitsSystemWindows=“true” 属性的默认行为:它设置 View 的填充以确保内容不会覆盖系统窗口。

    Source

    【讨论】:

      【解决方案2】:

      为此,我建议您隐藏状态栏并启用全屏窗口。试试下面,它的工作原理。

      第一步:在style.xml中创建主题

      <style name="FullScreen" parent="Theme.AppCompat.NoActionBar">
          <item name="android:windowNoTitle">true</item>
          <item name="windowActionBar">false</item>
          <item name="android:windowFullscreen">true</item>
          <item name="android:windowContentOverlay">@null</item>
      </style>
      

      第2步:在manifest文件中为activity应用主题,也可以在应用层应用主题。例如在活动级别中添加。

      <activity
          android:name=".MainActivity"
          android:theme="@style/FullScreen" />
      

      【讨论】:

        猜你喜欢
        • 2021-10-10
        • 1970-01-01
        • 1970-01-01
        • 2015-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多