IT源码网

Android 完全透明的状态栏

sharpest 2024年12月31日 程序员 34 0

我搜索了文档但只找到了这个: Link 。哪个用于使栏半透明?我想做的是使状态栏完全透明(如下图所示)并使其向后兼容 APK<19:

我的 styles.xml:

<resources xmlns:tools="http://schemas.android.com/tools"> 
 
  <style name="AppTheme" parent="Theme.AppCompat.Light"> 
  <item name="android:actionBarStyle">@style/ThemeActionBar</item> 
  <item name="android:windowActionBarOverlay">true</item> 
  <!-- Support library compatibility --> 
  <item name="actionBarStyle">@style/ThemeActionBar</item> 
  <item name="windowActionBarOverlay">true</item> 
  </style> 
 
  <style name="ThemeActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid"> 
  <item name="android:background"> @null </item> 
  <!-- Support library compatibility --> 
  <item name="background">@null</item> 
  <item name="android:displayOptions"> showHome | useLogo</item> 
  <item name="displayOptions">showHome|useLogo</item> 
 
  </style> 
 
</resources> 

我能做什么:

请您参考如下方法:

您需要做的就是在主题中设置这些属性:

<item name="android:windowTranslucentStatus">true</item> 
<item name="android:windowTranslucentNavigation">true</item> 

您希望拥有透明状态栏的 Activity/容器布局需要设置此属性:

android:fitsSystemWindows="true" 

通常不可能在 pre-kitkat 上执行此操作,看起来你可以做到 but some strange code makes it so .

编辑:我会推荐这个库:https://github.com/jgilfelt/SystemBarTint用于许多预 Lollipop 状态栏颜色控制。

经过深思熟虑,我了解到完全禁用 Lollipop 状态栏和导航栏上的半透明或任何颜色的答案是在窗口上设置此标志:

// In Activity's onCreate() for instance 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
    Window w = getWindow(); 
    w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 
} 

不需要其他主题,它会产生如下内容:


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!