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
- 自動記憶體調整中真正決定自動調整的引數記憶體
- 蘋果新專利:Apple Watch自動調整iPhone音量蘋果APPiPhone
- 根據瀏覽器視窗的大小不同自動調節文字大小瀏覽器
- APP開發實戰172-統計APP啟動時間的方法APP
- Hybrid App開發實戰APP
- 批量調整視訊尺寸大小的方法,一鍵自動批量調整視訊
- iphone app開發實戰很重要:《iPhone App開發實戰手冊》讀後感iPhoneAPP
- autorandr:自動調整螢幕佈局
- vs code 自動調整程式碼格式
- 根據viewport的size自動調整fontsize大小View
- 領域模型驅動開發(2)-工程結構的調整模型
- Ionic實戰 自動升級APP(Android版)APPAndroid
- kindeditor 上傳圖片 自動調整尺寸大小
- APP開發實戰171-使用APK Analyzer分析APPAPPAPK
- 雲端計算開發技術Python自動化運維開發實戰二Python運維
- 《HTML5移動網站與App開發實戰》簡介HTML網站APP
- AI開發實戰1-App Inventor的編譯AIAPP編譯
- 「ArrayBuffer」應用-以自動調整照片方向為例
- DevExpress VGridControl 行寬自動調整devExpress
- 雲端計算開發教程:Python自動化運維開發實戰流程控制Python運維
- CrazyWing:Python自動化運維開發實戰 十七、PythonPython運維
- 視訊直播app原始碼,對首頁樣式的整體調整,調整成圓角化APP原始碼
- 測試開發之自動化篇-Appium指令碼開發APP指令碼
- Oracle10gR2自動檢查點調整的新特性Oracle
- 雲端計算開發教程:Python自動化運維開發實戰Python變數Python運維變數
- Appium iOS 測試指令碼開發實戰APPiOS指令碼
- 移動端開發小結(實戰)
- DB2 V9自動自調整記憶體詳解DB2記憶體
- PGA自動管理原理深入分析及效能調整(六)
- PGA自動管理原理深入分析及效能調整(一)
- PGA自動管理原理深入分析及效能調整(五)
- (轉)PGA自動管理原理深入分析及效能調整
- APP開發實戰119-APP程式碼優化APP優化
- 直播軟體app開發,左右自動滑動的輪播圖廣告APP
- JavaScript拖動調整元素的尺寸JavaScript
- uniapp 雲開發省錢之調整函式執行記憶體大小APP函式記憶體
- win10怎麼關閉視窗移動至邊緣時自動調整大小_win10取消移動視窗到邊緣自動調整大小的方法Win10