單位
dp 單位: 一般用於寬度、高度、邊距等。是根據螢幕密度來調整大小的單位 (密度無關像素)
sp 單位: 一般用於文字大小。相對於螢幕密度,可以根據不同的螢幕尺寸自動調整字體大小
字體自適應大小 - autoSizeTextType (Android 8.0 (API 26) 後才可使用)
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoSizeTextType="uniform" />
※ 不要同時使用 wrap_content 和 autoSizeTextType,這可能會導致不可預期的結果
※ 可使用 autoSizeMinTextSize 和 autoSizeMaxTextSize 來設定最小和最大文字大小
使用 res/values/dimens.xml 資源
定義
<resources>
<dimen name="text_size_small">12sp</dimen>
<dimen name="text_size_medium">16sp</dimen>
<dimen name="text_size_large">20sp</dimen>
</resources>
呼叫
android:textSize="@dimen/text_size_medium"
進階 - 使用 values-sw[width]dp 文件夾
創建不同尺寸的 values 文件夾 (例如 values-sw600dp、values-sw720dp),在這些文件夾下創建 dimens.xml 文件,定義不同螢幕寬度下的字體大小。
其他
可在 onMeasure 中自行計算字體大小 (需繼承 TextView 創建一個新 class)