Android 預設 ActionBar(舊版)或 Toolbar(Material Design)佔據頂部空間,若需全螢幕或完全自訂頂部佈局,需透過主題或程式碼隱藏預設標題列,並自行實作替代方案。
<!-- res/values/styles.xml -->
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<!-- AndroidManifest.xml -->
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
@Override
protected void onCreate(Bundle savedInstanceState) {
// 必須在 setContentView 之前
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 或 getSupportActionBar().hide(); // 需在 setContentView 後
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
<!-- activity_main.xml -->
<androidx.coordinatorlayout.widget.CoordinatorLayout ...>
<com.google.android.material.appbar.AppBarLayout ...>
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:titleTextColor="@android:color/white"
app:navigationIcon="@drawable/ic_menu" />
</com.google.android.material.appbar.AppBarLayout>
<!-- 內容區 -->
<FrameLayout
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
// MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar); // 將 Toolbar 設為 ActionBar 替代品
// 後續可用 getSupportActionBar() 設定標題、返回鍵、選單等
}
| 現象 | 原因 | 解決 |
|---|---|---|
| requestWindowFeature 崩潰 | 在 setContentView 後呼叫 | 移至 super.onCreate 之前 |
| 主題套用無效 | Activity 獨立設定 theme 覆蓋 Application | 檢查 Manifest activity 標籤 theme 屬性 |
| 狀態列顏色不變 | 未設定 statusBarColor 或 fitsSystemWindows | 主題加入 colorPrimaryDark、佈局根元素 fitsSystemWindows="true" |
Theme.MaterialComponents.DayNight.NoActionBar 為基礎主題。Toolbar 控制導航、標題、選單、搜尋等功能。WindowInsetsController (API 30+) 或舊版 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN。徹底移除預設標題列並採用自訂 Toolbar,能賦予 App 獨特品牌視覺與彈性互動體驗。