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

Android 移除 Activity 預設標題列與自訂 Toolbar 實作

     編輯:程式設計綜合問答

Android 預設 ActionBar(舊版)或 Toolbar(Material Design)佔據頂部空間,若需全螢幕或完全自訂頂部佈局,需透過主題或程式碼隱藏預設標題列,並自行實作替代方案。

方案一:主題隱藏(最簡潔,適用全螢幕/自訂 Toolbar)


<!-- 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" />

方案二:程式碼動態隱藏(需在 setContentView 前呼叫)


@Override
protected void onCreate(Bundle savedInstanceState) {
    // 必須在 setContentView 之前
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    // 或 getSupportActionBar().hide(); // 需在 setContentView 後
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

方案三:自訂 Toolbar 完全取代(現代標準做法)


<!-- 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 控制導航、標題、選單、搜尋等功能。
  • 沉浸式狀態列需 API 21+,配合 WindowInsetsController (API 30+) 或舊版 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN。

徹底移除預設標題列並採用自訂 Toolbar,能賦予 App 獨特品牌視覺與彈性互動體驗。

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