我正在尝试使用此代码在我的应用程序中使状态栏透明:
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)
但它不起作用.状态栏只是更改颜色,变为灰色,不透明.我的错误在哪里?如何使状态栏透明?
我有一个活动DrawerLayout.我们的客户要求我们根据从中选择的项目动态更改操作栏颜色和此活动的相应状态栏颜色DrawerLayout.这很容易做到.但是,我的问题是,当我动态更改状态栏颜色时,我无法保持状态栏透明.当我打开抽屉时,彩色状态栏覆盖了这样的顶部DrawerLayout:
但是,我希望我DrawerLayout看起来像这样:
我可以使用以下行:
<item name="android:windowTranslucentStatus">true</item>
Run Code Online (Sandbox Code Playgroud)
但是,我的问题不在于我无法设置状态栏的透明度.我的问题是动态更改状态栏和操作栏颜色不起作用windowTranslucentStatus.colorPrimaryDark即使我打电话,我的状态栏颜色仍然是(上图中状态栏上可见的芥末黄色)getWindow().setStatusBarColor().
现在,我跟着这个教程和这个和这个在许多其他计算器的问题,但未能解决该问题.所有这些文章都说,ActionBar一旦我设置为windowTranslucentStatus,将移动到状态栏下方的顶部(以便状态栏与操作栏重叠)true.之后,我应该能够在操作栏中添加一些填充,只需更改操作栏颜色也会导致颜色相同的深色状态栏,因为状态栏实际上是半透明的并且与我的操作栏重叠.但是,出于某种原因,在我的情况下不会发生这种情况.操作栏保持它是我是否设置fitsSystemWindows到true或false或完全删除该属性.操作栏始终位于状态栏下方,当然,如果我设置透明度,则状态栏始终为黄色.
我还尝试以编程方式更改状态栏颜色时设置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
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) 在我的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
我的活动使用了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) 我DrawerNavigator在我的应用程序中使用了反应导航.没有任何自定义,Android状态栏为蓝色,而不是黑色.
我试着这样做
StatusBar.setBackgroundColor('#000000');
Run Code Online (Sandbox Code Playgroud)
但它只能工作几秒钟,然后又会变回蓝色.似乎我正在使用的东西将状态栏颜色设置为蓝色.但是,我试图删除所有依赖项并且只保留react-navigation,它仍然会发生,而react-navigation的文档也没有说明这一点.
如何使用react-navigation将状态栏颜色设置为黑色?
这看起来像一个重复的问题,但我无法做到.我想要完整的透明(不是半透明)状态栏以及导航栏,并希望内容显示在它们后面.
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 8上不起作用。如上如何在Android中禁用状态栏的单击和下拉菜单所述 ?
就像这个答案所描述的那样,此方法确实适用于android 7及以下版本,但是此方法不适用于android 8(oreo)。
我已经在android 7及更低版本上对其进行了测试,并且可以正常工作,但是在android 8上将其拉出时,状态栏仍然会拉低。
如果您对此有解决方案,请协助。
谢谢你们。
我遇到的所有隐藏 Android 应用状态栏的方法在 Android 11 中均已弃用。
有谁知道目前可以接受的方法吗?
我还使用 Kotlin 来开发我的应用程序。
android kotlin android-statusbar android-api-levels android-11
我试图在 Android 10 中隐藏状态栏。我已经阅读了很多类似问题的答案,但它们不适用于我的设备。目标是将状态栏的空间用作应用程序视图的一部分:
下面描述的一些解决方案适用于模拟器,但不适用于我的物理设备(Redmi Note 10,API 版本 29)。
我将不胜感激任何建议。
@android:style/Theme.NoTitleBar.Fullscreen。android:windowFullscreen。fitsSystemWindowsSYSTEM_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。我设法得到了两个结果,但这两个结果都不适合我。
根据以下答案,不可能WindowInsetsController在 API 29 或更早版本上使用:How do I hide the status bar in my Android 11 app?
由@Zain提议。
活动: …