日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

5 控件固定大小_【聊技术】在Android中实现自适应文本大小显示

發布時間:2025/3/21 Android 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5 控件固定大小_【聊技术】在Android中实现自适应文本大小显示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本周的聊技術話題和大家說說如何在Android中實現自適應文本大小顯示。

想象一下,在布局中,通常顯示文本的區域大小是固定的,但是文本長度并不總是固定的。比如列表中的文章標題、界面下方的按鈕文本等等。

為了盡可能讓這些文字可見,傳統的做法是通過文本長度設置文本大小,或者通過android:ellipsize屬性設置文本省略方式等等。

實際上,從Android O開始,Android API引入了自適應文本大小的簡易實現。它不僅可以用于TextView,對于Button等具有文本顯示的控件同樣適用。通過androidX,還可以適配到低版本的Android中。

下面,我們以TextView為例,來看看如何使用它們吧。

開啟自適應顯示模式

我們以Empty Activity方式創建一個新的工程,其中默認包含了只顯示Hello World!文本的TextView控件,我們為其加上id,并修改尺寸和默認文本。為了兼容低版本的Android設備,使用androidX中提供的的AppCompatTextView替代TextView。

完整的布局文件如下:

<?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"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/activity_main_tv"android:layout_width="100dp"android:layout_height="20dp"android:text="abcdefghijklmno"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

然后,將程序運行起來,可以看到,文字的顯示僅到字母“n”處就停止了,“o”并沒有顯示。顯而易見,這是因為文本框的大小限制了文字的顯示。

下面,我們來到MainActivity代碼,調用setAutoSizeTextTypeWithDefaults();方法,開啟自適應縮放。

private AppCompatTextView demoTv;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);demoTv = findViewById(R.id.activity_main_tv);demoTv.setAutoSizeTextTypeWithDefaults(TextView.AUTO_SIZE_TEXT_TYPE_UNIFORM); }

重新運行后,可以看到文本被完整地顯示出來了:

對于setAutoSizeTextTypeWithDefaults();方法,我們可以傳入的參數值通常有兩個,分別是TextView.AUTO_SIZE_TEXT_TYPE_UNIFORM和TextView.AUTO_SIZE_TEXT_TYPE_NONE。對應開啟自適應文本大小與否。

自定義文本縮放方式

下面,我們修改TextView的文本,繼續追加:

android:text="abcdefghijklmnopqrstuvwxyz"

再次運行App,我們發現:無論自適應模式開關與否,都無法完整地顯示所有文本。這時候,我們就要對文本大小的自動縮放進行自定義了。

設定縮放配置

首先要介紹一種通過設定縮放配置實現自定義縮放的方法。我們先來看代碼:

demoTv.setAutoSizeTextTypeUniformWithConfiguration(4,15,2, TypedValue.COMPLEX_UNIT_SP);

如上代碼所示,setAutoSizeTextTypeUniformWithConfiguration();是實現此種縮放方式的關鍵,它由4個參數構成。

  • 4:表示文本縮放的最小值;
  • 20:表示文本縮放的最大值;
  • 2:表示文本縮放的嘗試步長;
  • TypedValue.COMPLEX_UNIT_SP:指定前三個參數使用SP作為單位。

可以這樣理解,當文本無法顯示完全時,系統將以步長為單位遞減文本大小設定值,直到文本完全顯示,或者嘗試值小于給定的文本縮放的最小值。

重新運行App,可以看到文本已經被完整地顯示出來了。

定義預設值

自定義縮放的第二種方式是通過定義預設值實現。我們還是直接看代碼:

demoTv.setAutoSizeTextTypeUniformWithPresetSizes(new int[]{9, 11, 13, 15}, TypedValue.COMPLEX_UNIT_SP);

通過setAutoSizeTextTypeUniformWithPresetSizes();方法定義預設值,需要兩個參數,第一個是預設值的具體數值;第二個則是預設值的單位。

以上面的代碼為例,在進行文字縮放時,文字大小只能從9SP,11SP,13SP和15SP這4個值中取。遺憾的是,即使取到9SP,文字依然無法完全顯示:

仔細觀察圖中第二行文字,可以發現文字的下面由于高度不夠,被截去了一段。

小結

綜上,我們總共講解了三種文本自動縮放的方式。這三種方式無所謂孰優孰劣,只是使用場景的區別。有了它們,我們無需自己定義不同的文字大小,更無需自己實現文字的自適應縮放了。

最后,特別需要說明:一定要在xml以及java代碼中使用AppCompatTextView控件,除非你的App只支持Android O及以上版本。

這次的分享就到這里,希望上述內容對你有所幫助。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的5 控件固定大小_【聊技术】在Android中实现自适应文本大小显示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。