标签: android-statusbar

状态栏透明度不起作用

我正在尝试使用此代码在我的应用程序中使状态栏透明:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setStatusBarColor(Color.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.状态栏只是更改颜色,变为灰色,不透明.我的错误在哪里?如何使状态栏透明?

android android-5.0-lollipop android-statusbar

7
推荐指数
1
解决办法
2133
查看次数

Android:具有动态actionBar颜色和DrawerLayout的透明状态栏

我有一个活动DrawerLayout.我们的客户要求我们根据从中选择的项目动态更改操作栏颜色和此活动的相应状态栏颜色DrawerLayout.这很容易做到.但是,我的问题是,当我动态更改状态栏颜色时,我无法保持状态栏透明.当我打开抽屉时,彩色状态栏覆盖了这样的顶部DrawerLayout:

错误的布局

但是,我希望我DrawerLayout看起来像这样:

正确的布局

我可以使用以下行:

<item name="android:windowTranslucentStatus">true</item>
Run Code Online (Sandbox Code Playgroud)

但是,我的问题不在于我无法设置状态栏的透明度.我的问题是动态更改状态栏和操作栏颜色不起作用windowTranslucentStatus.colorPrimaryDark即使我打电话,我的状态栏颜色仍然是(上图中状态栏上可见的芥末黄色)getWindow().setStatusBarColor().

现在,我跟着这个教程和这个这个在许多其他计算器的问题,但未能解决该问题.所有这些文章都说,ActionBar一旦我设置为windowTranslucentStatus,将移动到状态栏下方的顶部(以便状态栏与操作栏重叠)true.之后,我应该能够在操作栏中添加一些填充,只需更改操作栏颜色也会导致颜色相同的深色状态栏,因为状态栏实际上是半透明的并且与我的操作栏重叠.但是,出于某种原因,在我的情况下不会发生这种情况.操作栏保持它是我是否设置fitsSystemWindowstruefalse或完全删除该属性.操作栏始终位于状态栏下方,当然,如果我设置透明度,则状态栏始终为黄色.

我还尝试以编程方式更改状态栏颜色时设置alpha.这确实使状态栏有点透明,但它看起来很奇怪,因为它不再是黑暗.删除CoordinatorLayout也没有帮助.我花了几个小时试图解决这个问题,现在非常沮丧.任何帮助是极大的赞赏.

我的activity_main:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true">

    <include layout="@layout/nav_header_main" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/nav_menu_recyclerview"
        android:layout_width="match_parent" …
Run Code Online (Sandbox Code Playgroud)

xml android drawerlayout android-statusbar android-coordinatorlayout

7
推荐指数
1
解决办法
1979
查看次数

低于21的API级别的状态栏颜色未更改

API级别21或更高级别的状态栏颜色根据我的要求而变化,但是如何更改API级别21以下的颜色。

以下是两个API的屏幕截图

API级别21:

API等级19:

colors.xml

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FFFFFF</color>
    <item name="b" type="color">#FF33B5E5</item>

    <item name="p" type="color">#FFAA66CC</item>

    <item name="g" type="color">#FF99CC00</item>

    <item name="o" type="color">#FFFFBB33</item>
</resources>
Run Code Online (Sandbox Code Playgroud)

Style.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBarOverlay">false</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
    <item name="tabSelectedTextColor">@color/colorAccent</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> …
Run Code Online (Sandbox Code Playgroud)

xml android android-theme android-styles android-statusbar

7
推荐指数
2
解决办法
9239
查看次数

Android nougat状态栏在启动活动时显示白色

在我的Android应用程序中,我有一个MainActivity说M.这个活动使用Android的tabLayout小部件来初始化四个选项卡.每个标签对应一个片段,说F1,F2,F3,F4是四个片段.

从F2开始,我发起的活动就是C.但是在启动C时,我设备上的状态栏会闪烁一会儿.闪烁我的意思是,原来是它的黑色(黑色).然后它会逐渐淡化为白色并再次变暗.现在C启动了.当我尝试退出C,返回F2(通过按导航后退按钮)再次显示相同的效果,但这次它变得更糟.我的意思是状态栏保持白色有点长.然后它又回到了深色.

我只在android Nougat上观察这个问题.在以前的版本上它的wokring.

到目前为止,我已经尝试过 如何在活动场景动画过渡期间阻止状态栏和导航栏动画?

上面的链接有两种方法:Appraoch 1.它对我不起作用方法2.我的应用程序崩溃,因为findViewById(android.R.id.statusBarBackground);返回null.

请建议我如何解决这个问题.

android activity-transition shared-element-transition android-statusbar android-7.0-nougat

7
推荐指数
1
解决办法
891
查看次数

StatusBar显示键盘何时显示

我的活动使用了CollapsingToolbarLayout,我成功删除了StatusBar这样做:

View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
Run Code Online (Sandbox Code Playgroud)

问题是,当softkeyboard弹出时,StatusBar再次出现,消耗宝贵的空间.

如何让它永久隐藏在ActivityView

如果我将它设置为FullScreen,它可以工作,但我松了SOFT_INPUT_ADJUST_RESIZE参数.主窗口在softkeyboard显示时滚动,而不是根据需要调整大小.

更新:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:fitsSystemWindows="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/my_appar"
        android:fitsSystemWindows="false"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:background="@color/white">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:toolbarId="@+id/collapsetoolbar"
            app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
            app:layout_scrollInterpolator="@android:anim/decelerate_interpolator"
            app:contentScrim="?attr/colorPrimary">

            <android.support.v7.widget.Toolbar
                android:id="@+id/my_toolbar"
                android:elevation="4dp"
                android:layout_height="wrap_content"
                android:layout_width="match_parent">
            </android.support.v7.widget.Toolbar>

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/activity_id"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="... .MyActivity"
        android:orientation="vertical"
        >

        <FrameLayout
            android:id="@+id/yt_frame"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <fragment
            ...
        </FrameLayout> …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-statusbar

7
推荐指数
1
解决办法
2839
查看次数

使用react-navigation更改状态栏颜色

DrawerNavigator在我的应用程序中使用了反应导航.没有任何自定义,Android状态栏为蓝色,而不是黑色.

我试着这样做

StatusBar.setBackgroundColor('#000000');
Run Code Online (Sandbox Code Playgroud)

但它只能工作几秒钟,然后又会变回蓝色.似乎我正在使用的东西将状态栏颜色设置为蓝色.但是,我试图删除所有依赖项并且只保留react-navigation,它仍然会发生,而react-navigation的文档也没有说明这一点.

如何使用react-navigation将状态栏颜色设置为黑色?

android-statusbar react-native react-navigation

7
推荐指数
2
解决办法
2万
查看次数

显示状态和导航栏后面的内容

这看起来像一个重复的问题,但我无法做到.我想要完整的透明(不是半透明)状态栏以及导航栏,并希望内容显示在它们后面.

activity_details.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary"
    tools:context="com.bitspilanidvm.bosm2017.DetailsActivity">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/q"
    android:scaleType="centerCrop"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

v21 styles.xml

<resources>

<!-- Theme for API level > 21 -->
<style name="AppTheme" parent="AppBaseTheme">
     <!--Customize your theme here. -->
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:navigationBarColor">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在活动java文件中

getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
               View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        );
Run Code Online (Sandbox Code Playgroud)

这就是我得到的.

在此输入图像描述

如何获取导航栏后面的内容?

如果我加

<item name="android:windowTranslucentNavigation">true</item>
Run Code Online (Sandbox Code Playgroud)

到我的styles.xml

这是我得到的

在此输入图像描述

正如您所看到的,内容位于导航栏后面,但导航栏必须是半透明的.

这有什么解决方案吗?

android navigationbar android-statusbar

7
推荐指数
2
解决办法
4869
查看次数

在Oreo中禁用状态栏拉

通过禁用状态栏的单击和单击来为应用程序设置信息亭的方法在android 8上不起作用。如上如何在Android中禁用状态栏的单击和下拉菜单所述

  1. 您可以在状态栏上放置一个窗口以禁用任何触摸或下拉。

就像这个答案所描述的那样,此方法确实适用于android 7及以下版本,但是此方法不适用于android 8(oreo)。

我已经在android 7及更低版本上对其进行了测试,并且可以正常工作,但是在android 8上将其拉出时,状态栏仍然会拉低。

如果您对此有解决方案,请协助。

谢谢你们。

android android-statusbar android-8.0-oreo android-8.1-oreo

7
推荐指数
1
解决办法
1921
查看次数

如何隐藏 Android 11 应用中的状态栏?

我遇到的所有隐藏 Android 应用状态栏的方法在 Android 11 中均已弃用。

有谁知道目前可以接受的方法吗?

我还使用 Kotlin 来开发我的应用程序。

android kotlin android-statusbar android-api-levels android-11

7
推荐指数
2
解决办法
2万
查看次数

在Android 10(API 29)中隐藏状态栏并在应用程序中使用其空间

我试图在 Android 10 中隐藏状态栏。我已经阅读了很多类似问题的答案,但它们不适用于我的设备。目标是将状态栏的空间用作应用程序视图的一部分:

在此输入图像描述

下面描述的一些解决方案适用于模拟器,但不适用于我的物理设备(Redmi Note 10,API 版本 29)。

我将不胜感激任何建议。

我尝试过的:
  • 使用不同的预定义样式等@android:style/Theme.NoTitleBar.Fullscreen
  • 使用不同的样式属性,包括:等android:windowFullscreenfitsSystemWindows
  • 使用setSystemUiVisibility在程序代码中设置不同的样式,包括SYSTEM_UI_FLAG_FULLSCREEN, SYSTEM_UI_FLAG_IMMERSIVE_STICKY, SYSTEM_UI_FLAG_HIDE_NAVIGATION, SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, SYSTEM_UI_FLAG_LAYOUT_STABLE
  • 使用clearFlagsaddFlagssetFlags添加和删除不同的标志。
  • 使用setStatusBarColor将状态栏颜色设置为透明。
  • 使用requestWindowFeature请求不同的功能。
  • 将布局顶部填充更改为负值。
  • 通过定义applyTopWindowInsetsForViewonApplyWindowInsets函数来使用插图。
我已经做到了。

我设法得到了两个结果,但这两个结果都不适合我。

  1. 半透明状态栏。

在此输入图像描述

  1. 完全黑色的状态栏,不占用应用程序视图的空间。

在此输入图像描述

2022 年 5 月 10 日更新:

根据以下答案,不可能WindowInsetsController在 API 29 或更早版本上使用:How do I hide the status bar in my Android 11 app?

解决方案1

由@Zain提议。

活动: …

android android-statusbar

7
推荐指数
1
解决办法
8299
查看次数