iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
自我挑戰組

30 天開發 Android App 的流水帳系列 第 12

Day 12:來改 App Toolbar 顏色吧

  • 分享至 

  • xImage
  •  

今天就來改 ActionBar 的顏色,目前是有點太豔的紫色,所以想要改成比較平淡簡約一點的顏色。

官方如何客製 toolbar 的介紹,給大家做給參考

https://developer.android.com/training/appbar/setting-up

目前 activity_main.xml 是用預設的,但這邊想要加一個 toolbar 讓畫面上的彈性比較高,讓文字、顏色和高度等等都可做適當的配置。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="0dp"
        android:layout_height="?actionBarSize"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@id/toolbar" />

</androidx.constraintlayout.widget.ConstraintLayout>

設定之後,讓預設的 toolbar 背景改成 #F5F5F5,就像下方截圖呈現的。

https://ithelp.ithome.com.tw/upload/images/20200924/20130546H6CfnMWMZN.png

但,那個狀態列那欄的顏色跟 toolbar 的顏色很不搭,也想讓它們變成同一個樣子,該怎麼調整呢?這邊不用寫程式碼去實做,只要把 style 當中 AppTheme 的 colorPrimaryDark 改成想要的顏色即可。

https://ithelp.ithome.com.tw/upload/images/20200924/20130546VjKuUO4f9f.png

改完了 statusbar 顏色,上面的通知欄圖示根本在考驗大家的視力。那接下來該怎麼調整呢?繼續在 AppTheme 當中加上這個屬性,但這個屬性只支援 API 23 以上的裝置。所以像截圖下方的第一張就是在 API 26;下圖第二張,則是 API 21。看出了2 張的差異性了嗎?

<item name="android:windowLightStatusBar" tools:targetApi="23">true</item>

https://ithelp.ithome.com.tw/upload/images/20200924/20130546AN5YRPltRP.png
https://ithelp.ithome.com.tw/upload/images/20200924/20130546SwyqtqYCGB.png

Android 開發者最常遇到的版本不同問題之一,所以需要依 API 版本號去做設置:

  • 各自對應的 API 版本號去做 AppTheme 設置 i.e. values-23
  • 從程式碼去處理

選擇程式碼去處理這一塊,也是因為 API 21 的裝置越來越少,所以只加程式碼判斷 < 23 覺得效益上還可以。針對 API < 23 的讓 status bar 改成黑色,就像下方截圖,就正常許多了。

https://ithelp.ithome.com.tw/upload/images/20200924/20130546XwXVd1Ze9k.png

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
   window.statusBarColor = Color.BLACK
}

總算不是那麼搶眼的紫色了,明天繼續!


上一篇
Day 11:如何設計美麗的 App 畫面?
下一篇
Day 13:RecyclerView 介面大反攻
系列文
30 天開發 Android App 的流水帳32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言