首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 狀態列顏色修改:5.0 以下相容方案

     編輯:程式設計綜合問答

問題

Android 5.0 (API 21) 以上可用 Window.setStatusBarColor() 或 Toolbar 配合 fitsSystemWindows 修改狀態列顏色;5.0 以下無系統 API 支援。

相容方案

  1. 透明狀態列 + 沉浸式佈局 (KitKat 4.4+):
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

在根佈局最上層加入 View 佔位高度 = 狀態列高度,背景設為目標顏色。

  1. SystemBarTint 庫 (經典方案):
implementation 'com.readystatesoftware.systembartint:systembartint:1.0.3'
SystemBarTintManager tintManager = new SystemBarTintManager(activity);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.colorPrimary);
  1. 手動計算狀態列高度插入 View:
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
int statusBarHeight = resourceId > 0 ? getResources().getDimensionPixelSize(resourceId) : 0;
View statusBarView = new View(this);
statusBarView.setLayoutParams(new FrameLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight));
statusBarView.setBackgroundColor(Color.parseColor("#3F51B5"));
((ViewGroup) findViewById(android.R.id.content)).addView(statusBarView, 0);

注意事項

  • 4.4 (KitKat) 僅支援半透明,無法完全自訂顏色;5.0+ 才有完整 API。
  • 使用 fitsSystemWindows="true" 時需配合 android:clipToPadding="false"。
  • 全螢幕模式 (WindowManager.LayoutParams.FLAG_FULLSCREEN) 會隱藏狀態列,不適用需保留狀態列的場景。

參考資源

Android 狀態列顏色修改完整指南 (含 5.0 以下相容)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved