我可以只为状态栏设置FLAG_LAYOUT_NO_LIMITS吗?

我需要做透明的状态栏。 我正在使用getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) ,并且是我想要的状态栏。 但是它也影响导航栏:它变成了透明的getWindow().setNavigationBarColor(Color.BLACK)什么都不做。

有没有办法使透明状态栏而不是导航栏?

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 

你可以像这样使用来隐藏状态栏和导航栏

 WindowManager.LayoutParams attributes = getWindow().getAttributes(); attributes.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; getWindow().setAttributes(attributes); 

并再次显示navigationBar使用这个

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } 

颜色对我来说是灰色的,也许你可以强迫你的原色

我发现解决方案兄弟

  

然后将这个透明主题应用到您的活动清单中

   

是的,您可以在Style.xml中使用此代码

  

然后将其应用到您的布局,只需在根布局(视图)中添加以下行:

 android:theme="@style/transparent" 

使用mikepenz的评论

下面是我正在工作的代码(转换为kotlin)。

 // at AppCompatActivity, min SDK is 16, I tested api 25 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) { window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) } if (Build.VERSION.SDK_INT >= 19) { window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN } if (Build.VERSION.SDK_INT >= 21) { window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) window.statusBarColor = Color.TRANSPARENT } setContentView(R.layout.activity_main) }