APP開發實戰177-Autosizing TextViews(自動調整文字大小的TextViews)
自動調整文字大小的TextViews
Android O允許開發人員制定TextView,可以基於TextView的特性和邊界佈局自動放到文字或縮小文字以填充佈局空間。這使得更容易依據不同尺寸的螢幕和不同的文字內容優化文字尺寸。
從26.0 Beta版的支援庫開始,支援此功能執行在裝了Android O之前的系統的裝置上。這個庫支援Android4.0(API level 14)及更高的版本。
可以使用framework或整合支援庫,用程式碼或在XML檔案中設定屬性的方式實現此功能,具體有以下三種方式:
1 Default
預設設定是讓 TextView 實現文字在水平和垂直方向同比例縮放。
(1) 程式碼實現
setAutoSizeTextTypeWithDefaults(@AutoSizeTextTypeintautoSizeTextType)
引數值:
AUTO_SIZE_TEXT_TYPE_NONE 關閉自動調整大小功能
AUTO_SIZE_TEXT_TYPE_UNIFORM 水平和垂直方向按同比例縮放
注意:預設的文字最小尺寸是12sp,最大尺寸是112sp,尺寸粒度 1px
使用支援庫時的程式碼實現:
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextViewtextview,int autoSizeTextType)
autoSizeTextType的值:
TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
(2) XML檔案中定義屬性
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoSizeTextType="uniform"
/>
使用支援庫時在XML檔案中定義屬性:
<LinearLayout
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="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:autoSizeTextType="uniform"
/>
/>
2 Granularity
間隔尺寸方式可以定義文字的最大和最小尺寸,及每次尺寸改變的單位大小
(1) 程式碼實現
setAutoSizeTextTypeUniformWithConfiguration(intautoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, intunit)
autoSizeStepGranularity:每次縮放的最小數值
unit:尺寸單位
使用支援庫時的程式碼實現:
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(intautoSizeMinTextSize,intautoSizeMaxTextSize, intautoSizeStepGranularity, int unit)
(2) XML檔案中定義屬性
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeStepGranularity="2sp"
/>
使用支援庫時在XML檔案中定義屬性:
<LinearLayout
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="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="100sp"
app:autoSizeStepGranularity="2sp"
/>
</LinearLayout>
3 Preset Sizes
預設尺寸允許開發人員預先設定文字尺寸縮放時的所有值,文字的尺寸只會是設定值中的一個。
(1) 程式碼實現
setAutoSizeTextTypeUniformWithPresetSizes(int[]presetSizes, int unit)
presetSizes:包含設定的一系列文字尺寸
使用支援庫時的程式碼實現:
TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextViewtextView,int[] presetSizes, int unit)
(2) XML檔案中定義屬性
//定義文字的尺寸
<resources>
<array
name="autosize_text_sizes">
<item>10sp</item>
<item>12sp</item>
<item>20sp</item>
<item>40sp</item>
<item>100sp</item>
</array>
</resources>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoSizeTextType="uniform"
android:autoSizePresetSizes="@array/autosize_text_sizes"
/>
使用支援庫時在XML檔案中定義屬性:
<resources>
<array
name="autosize_text_sizes">
<item>10sp</item>
<item>12sp</item>
<item>20sp</item>
<item>40sp</item>
<item>100sp</item>
</array>
</resources>
<LinearLayout
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="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:autoSizeTextType="uniform"
app:autoSizePresetSizes="@array/autosize_text_sizes"
/>
</LinearLayout>
相關文章
- auto_size_text 自動調整文字大小以適應其容器的 Flutter 外掛Flutter
- 批量調整視訊尺寸大小的方法,一鍵自動批量調整視訊
- vs code 自動調整程式碼格式
- 領域模型驅動開發(2)-工程結構的調整模型
- CrazyWing:Python自動化運維開發實戰 十七、PythonPython運維
- 開發者狂喜!Meta最新發布的LLM Compiler,實現77%自動調優效率Compile
- 《HTML5移動網站與App開發實戰》簡介HTML網站APP
- kindeditor 上傳圖片 自動調整尺寸大小
- 視訊直播app原始碼,對首頁樣式的整體調整,調整成圓角化APP原始碼
- 「ArrayBuffer」應用-以自動調整照片方向為例
- 自動編碼器Gridsearch超引數調整KerasKeras
- 在規定區域內自動調整文字位置
- 雲端計算開發技術Python自動化運維開發實戰二Python運維
- 雲端計算開發教程:Python自動化運維開發實戰Python變數Python運維變數
- 雲端計算開發教程:Python自動化運維開發實戰流程控制Python運維
- win10怎麼關閉視窗移動至邊緣時自動調整大小_win10取消移動視窗到邊緣自動調整大小的方法Win10
- PGA自動管理原理深入分析及效能調整(五)
- PGA自動管理原理深入分析及效能調整(一)
- Python辦公自動化之——調整Word樣式(二)Python
- VSCode回車換行後自動調整程式碼格式VSCode
- 使用@AutoConfigureBefore、After、Order調整Spring Boot自動配置順序Spring Boot
- PGA自動管理原理深入分析及效能調整(六)
- JavaScript拖動調整元素的尺寸JavaScript
- 直播軟體app開發,左右自動滑動的輪播圖廣告APP
- APP是如何實現自動續費的?APP
- 如何實現 AppStore App 的自動下載APP
- 《激戰2》的紙上談兵和實踐調整:區域任務與動態事件事件
- 移動端開發小結(實戰)
- PhoneGap Hybrid APP 開發實戰(1):第一個 Android APKAPPAndroidAPK
- 前端開發:基於cypress的自動化實踐前端
- Android QMUI實戰:實現APP換膚功能,並自動適配手機深色模式AndroidUIAPP模式
- Android 實現開機自啟APPAndroidAPP
- 自學安卓app開發(一)安卓APP
- WebView與APP互動實戰記錄WebViewAPP
- JavaScript 拖動調整元素尺寸JavaScript
- win10如何取消視窗貼邊時自動調整大小Win10
- 雲端計算開發技術,Python自動化運維開發實戰三部分Python運維
- 函式計算自動化運維實戰3 -- 事件觸發自動建立快照函式運維事件
- 混合開發實戰:App里拉起一個小程式(IOS篇)APPiOS