導航:首頁 > 操作系統 > androidtextview設置字數

androidtextview設置字數

發布時間:2022-12-08 16:35:25

A. android 計算textview一行顯示多少字

android:ems設置TextView的寬度為N個字元的寬度。這里測試為一個漢字字元寬度

android:maxEms設置TextView的寬度為最長為N個字元的寬度。與ems同時使用時覆蓋ems選項。

android:minEms設置TextView的寬度為最短為N個字元的寬度。與ems同時使用時覆蓋ems選項。

android:maxLength限制顯示的文本長度,超出部分不顯示。

android:lines設置文本的行數,設置兩行就顯示兩行,即使第二行沒有數據。

android:maxLines設置文本的最大顯示行數,與width或者layout_width結合使用,超出部分自動換行,超出行數將不顯示。

android:minLines設置文本的最小行數,與lines類似。

android:lineSpacingExtra設置行間距。

android:lineSpacingMultiplier設置行間距的倍數。如」1.2」

B. 如何限制textview顯示文字的個數

TextView中有個ellipsize屬性,作用是當文字過長時,該控制項該如何顯示,解釋如下:
1.android:ellipsize=」start」—–省略號顯示在開頭
2.android:ellipsize=」end」——省略號顯示在結尾
3.android:ellipsize=」middle」—-省略號顯示在中間
4.android:ellipsize=」marquee」–以跑馬燈的方式顯示(動畫橫向移動)
文字左右滾動三個屬性:
android:singleLine="true"
android:ellipsize="marquee"

android:marqueeRepeatLimit="marquee_forever"
設置顯示的行數:
android:maxLines="2" //文字最多顯示兩行

理解了這些屬性,對於設置顯示效果就再容易不過了!

C. Android TextView使用及性能優化

TextView 是Android中最常用的控制項,在這里記錄下TextView 的用法;

在Android中可以使用系統自帶的4種字體:

在XML中使用 android:typeface="normal" 進行設置

將字體文件放到main/assets/fonts目錄下,使用Asset讀取字體後進行設置

使用 android:drawableLeft="@mipmap/ic_launcher" 可以設置一張圖片顯示在文字的上下左右,減少布局層級

使用Span能夠在一段TextView中設置不同顏色的字體,鏈接,圖片等內容

使用ClickableSpan 能夠設置一段文字的點擊事件

創建自己的MyClickableSpan:

之後使用SpannableStringBuilder來創建字元串,並使用setSpan來為字元串的一部分設置Span對象

其中setSpan()方法的最後一個參數標識有以下常量,這些常量標識著在 對SpannableStringBuilder進行insert時 添加的字元適用的規則:

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE

Spanned.SPAN_EXCLUSIVE_INCLUSIVE

Spanned.SPAN_INCLUSIVE_EXCLUSIVE

Spanned.SPAN_INCLUSIVE_INCLUSIVE

前一個 EXCLUSIVE / INCLUSIVE 標識著在設置了Span的一段字元之前(緊挨著)插入字元時,被不被包含到Span范圍中, EXCLUSIVE 表示包含, INCLUSIVE 表示不包含;

第二個 EXCLUSIVE / INCLUSIVE 同理表示插入這段字元之後的效果;

ImageSpan用於在TextView中插入圖片,可以用來實現圖文混排

使用方法:

這樣實現的效果是文字與圖片底部進行對齊,如果需要圖片中線與文字中線對其,需要自己重寫ImageSpan

​ Android 中的TextView中存在著很多EditText中的特性,在setText()方法中會涉及到很多Span相關的操作,比如設置TextWatcher,重新構造Spannable等操作,在我們僅僅顯示靜態文本的時候這些操作都是沒有必要的(通過使用普通的TextView進行Debug來驗證普通的TextView的確是Span的);

​ 在大量顯示靜態文本的時候就可以通過StaticLayout來計算出TextView的布局信息,這項工作可以放到非UI線程來進行,能夠減少在setText()的時候UI線程的耗時,達到優化TextView性能的目的;

​ StaticLayout是TextView中用於顯示多行靜態文本的Layout,也是能夠支持SpannableString的,只是不能在Span變化之後重新Layout,所以在大部分場景下已經適用;

通過這個自定義的View來顯示Text,在onDraw()的時候直接使用layout來進行繪制,而設置需要顯示的文本則直接使用setLayout()來實現

使用下面給出的參考鏈接中的測試Demo在 ZTE A2017 Android7.1.1 高通820設備上,普通TextView在ListView中連續滾動的幀數是55幀,使用StaticLayout的結果為60幀

可以作為在APP使用CPU資源較多的情況下的優化手段

參考鏈接: TextView預渲染研究

在Android中,TextView的測量消耗了大量的時間,Android P中提供了PrecomputedText能夠將測量這個過程放到後台來執行,減輕對於UI線程的卡頓;

非Android P時,使用AppCompatTextView控制項,使用setTextFeature()方法來將文本的measure過程放到其他線程來執行,而不是直接將text應用於TextView;

在調用了這個方法之後如果對TextView進行邊距,文字大小等的設置都將會報錯;

Prefetch Text Layout in RecyclerView

PrecomputedTextCompat

在ListView中僅替換設置Text的方法時未測試出性能與普通方法有什麼優勢,猜測是ListView沒有在getView和顯示之間預留時間,

測試項目地址:

https://github.com/GavynZhang/PrecomuptedTextViewTest

D. Android開發怎麼設置textView每行的字數

不能設置,修改字體大小和TextView寬度也可以做到

E. android中textview如何限制字數

一開始採用的方法是函數textView:shouldChangeTextInRange:replacementText:來進行判斷:

[c-sharp] view plain
//鍵入Done時,插入換行符,然後執行addBookmark
- (BOOL)textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
//判斷加上輸入的字元,是否超過界限
NSString *str = [NSString stringWithFormat:@"%@%@", textView.text, text];
if (str.length > BOOKMARK_WORD_LIMIT)
{
textView.text = [textView.text substringToIndex:BOOKMARK_WORD_LIMIT];
return NO;
}
return YES;
}

但在使用中發現該方法在有聯想輸入的時候,根本無法對聯想輸入的詞進行判斷,然後嘗試使用textViewDidChange:,驗證可行:

[cpp] view plain
/*由於聯想輸入的時候,函數textView:shouldChangeTextInRange:replacementText:無法判斷字數,
因此使用textViewDidChange對TextView裡面的字數進行判斷
*/
- (void)textViewDidChange:(UITextView *)textView
{
//該判斷用於聯想輸入
if (textView.text.length > BOOKMARK_WORD_LIMIT)
{
textView.text = [textView.text substringToIndex:BOOKMARK_WORD_LIMIT];
}

閱讀全文

與androidtextview設置字數相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:142
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:732
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:301
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:141
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:890
app轉賬是什麼 瀏覽:163