導航:首頁 > 操作系統 > androidtextview截斷

androidtextview截斷

發布時間:2023-05-25 03:03:43

A. 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

B. 如何檢查的NSTextField已截斷文本

你最好的選擇可能是一個NSTextView代替NSTextField。如果NSTextView你可以得到NSTextContainer的NSTextView使用textContainer屬性。容器可以告訴你containerSize(空間繪制文本中)。NSString對象響應sizeWithAttributes:。你所得到的NSSize結構搶文本的寬度,如果繪制給定的屬性。見NSAttributedString應用套件添置參考的「常量」部分要弄清楚什麼屬性是相關的。 如果containerSize寬度小於所述sizeWithAttributes:寬度則文本將被截斷。坦乎 編輯:道歉,這是唯一真正的無lineFragmentPadding,但默認lineFragmentPadding是非零的。無論是減去textContainer.lineFragmentPadding從containerSize.width該:方法將它設置為0。 我想你也可以做出相對的大局信猛小文本區域的假設NSTextField該sizeWithAttributes:NSString方法中與該配合使用,但是這不是作為清潔。 編輯2:我意識到我沒有解決截斷橢圓的任擇議定書的興趣。在該示例代碼截斷NSTextView。我還以為我還不如扔在代碼,使NSTextView多一點類似在外觀上NSTextField通過把它的內部NSBox。增加對規模進行檢查,以確定是否應顯示工具提示將是一個簡單的除了上面的代碼。NSString* string = @"Hello World.";
// get the size the text will take up using the default font
NSSize textBounds = [string sizeWithAttributes:@{}];
// Create a border view that looks more or less like the border used around
// text fields
NSBox* borderView = [[NSBox alloc] initWithFrame:NSMakeRect(10, 10, 60, textBounds.height+4)];
[borderView setBoxType:NSBoxCustom];
[borderView setBorderType:NSBezelBorder];
[borderView setContentViewMargins:NSMakeSize(0, 0)];
[borderView setFillColor:[NSColor whiteColor]];
// Create the text view
NSTextView* textView = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, 60, textBounds.height)];
[textView setTextContainerInset:NSMakeSize(2, 0)];
[textView.textContainer setLineFragmentPadding:0];
[textView setEditable:YES];
// Set the default paragraph style so the text is truncated rather than
// wrapped
NSMutableParagraphStyle* parStyle = [[NSMutableParagraphStyle alloc] init];
[parStyle setLineBreakMode:NSLineBreakByTruncatingTail];
// Do not let text get squashed to fit
[parStyle :0.0];
[textView setDefaultParagraphStyle:parStyle];
[parStyle release];
/桐橋/ Set text
[textView setString:string];
// add NSTextView to border view
[borderView addSubview:textView];
[textView release];
// add NSBox to view you want text view displayed in
[self addSubview:borderView];
[borderView release];

C. android textview什麼意思

android系統的文本視圖的意思。
TextView是android裡面用的最多的控制項,TextView類似一般UI中的Label,TextBlock等控制項,只是為了單純的顯示一行或多行文本。TextView作為android開發中最簡單也最常用的控制項,作為初學者,需要熟知其屬性並熟練掌衡罩握。
android:cursorVisible設定游標為顯示/隱藏,默認顯示。
android:digits設置允許輸入哪些字元。如「1234567890.+-*/% ()」
android:drawableBottom在text的下方輸出一個drawable,如圖片。如果指定一個顏色的話會text的背景設為該顏色,並且同時和background使用時覆蓋後者。
android:drawableLeft在text的左邊輸出一個drawable,如圖片。
android:drawablePadding設置text與drawable(圖片)的間隔,與drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可設置為負數,單獨使用沒有效果。
android:drawableRight在text的右邊輸出一個drawable。
android:drawableTop在text的正上方輸出一個drawable。
android:editable設置是否可編輯。
android:editorExtras設置文本的額外的輸入數據。
android:ellipsize設置當文字過長時,該控制項該如何顯示。有如下值設置:」start」—-省略號顯示在開頭;」end」 ——省略號顯示在結尾;」middle」—-省略號顯示在中間;」marquee」 ——以跑馬燈的方式顯示(動畫咐逗鬧橫向移動)
android:freezesText設置保存文本的內容以及游標的位置。
android:gravity設置文本位置,如設置成「center」,文本將居中顯示。
android:hintText為空時顯示的文字提示信息,可通過textColorHint設置提示信息的顏色。此屬性在 EditView中使用,但是這里也可以用。
android:imeOptions附加功能,設置右下角IME動作與編輯框相關的動作,如actionDone右下角將顯示一個「完成」,而不設置默認是一個回車符號。這個在EditView中再詳細說明,此處無用。
android:imeActionId設置IME動作ID。
android:imeActionLabel設置IME動作標簽。
android:includeFontPadding設置文本是否包含頂部和底部額外空白,默認為true。
android:inputMethod為文本指定輸入法,需要完全限定名(完整的包名)。
android:inputType設置文本的類型,用於幫助輸入法顯示合適的鍵盤類型。在EditView中再詳細說明,這里無效果。
android:linksClickable設置鏈接是否點擊連接,即使設置了autoLink。
android:marqueeRepeatLimit在ellipsize指定marquee的情況下,設置重復滾動的次數,當設置為 marquee_forever時表示無限次。
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」
android:numeric如果被設置,該TextView有一個數字輸入法。此處無用,設置後唯一效果是TextView有點擊效果,此屬性在EdtiView將詳細說明。
android:password以小點」.」顯示文本
android:phoneNumber設置為電話號碼的輸入方式。
android:privateImeOptions設置輸入法選項,此處無用,在EditText將進一步討論。
android:scrollHorizontally設置文本超出TextView的寬度的情況下,是否出現橫拉條。
android:selectAllOnFocus如果文本是可選擇的,讓他獲取焦點而不是將游標移動為文本的開始位置或者末尾位置。 TextView中設置後無效果。
android:shadowColor指定文本陰影的顏色,需要與shadowRadius一起使用。
android:shadowDx設置陰影橫向坐標開始位置。
android:shadowDy設置陰影縱向坐標開始位置。
android:shadowRadius設置陰影的半徑。設置為0.1就變成字體的顏色了,一般設置為3.0的效果比較好。
android:singleLine設置單行顯示。如果和layout_width一起使用,當文本不能全部顯示時,後面用「…」來表示。
android:singleLine="true" android:layout_width="20dp"將只顯示「t…」。如果不設置singleLine或者設置為false,文本將自動換行
android:text設置顯示文本.
android:textAppearance設置文字外觀。如 「?android:attr/textAppearanceLargeInverse」這里引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用默認的外觀。可設置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
android:textColor設置文本顏色
android:textColorHighlight被選中文字的底色,默認為藍色
android:textColorHint設置提示信息文字的顏色,默認為灰色。與hint一起使用。
android:textColorLink文字鏈接的顏色.
android:textScaleX設置文字之間間隔,默認為1.0f。
android:textSize設置文字大小,推薦度量單位」sp」,如」15sp」
android:textStyle設置字形[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設置一個或多個,用「|」隔開
android:typeface設置文本字體,必須是以下常量值之一:normal 0, sans 1, serif 2,
monospace(等寬字體) 3]
android:height設置文本區域的高度,支持度量單位:px(像素)/dp/sp/in/mm(毫米)
android:maxHeight設置文本區域的最大高度
android:minHeight設置文本區域的最小高度
android:width設置文本區域的寬度,支持度量單位:px(像素)/dp/sp/in/mm(毫米),與layout_width 的區別看這里
android:maxWidth設置文本區域的最大寬度
android:minWidth設置文本區域的最小寬度

D. android中Textview怎麼限制在一行顯示且多餘字元自動截斷

話不多說,旦碰族看紅色部分,width屬性必須要設才有作用:

<TextViewandroid:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/PopNameList"
android:singleLine="true"
android:ellipsize="end"
android:textStyle="bold"
android:textSize="模弊15sp"吵缺
android:width="120dp"/>

E. android textView單行顯示,末尾省略號,前面是中文,後面全是英文字元並且超長,就會對中文進行省略號

系統問題,漢字為2字元,數字和英文為1,5.0系統以下存在的bug,貌似只能重寫TextView

F. Android linearlayout中設置TextView長文本滾動

在代碼中氏派脊羨哪拿到TextView,殲滲設置setMovementMethod(LinkMovementMethod.getInstance())試試

G. TextView ellipsize 屬性使用,省略號不顯示的問題

TextView設置展示文本時,限制顯示文本的長度,超出部分顯示省略散閉號或者跑馬燈效果來回切換。

android:ellipsize=""

常見屬性如下

android:ellipsize="start"        省略號在開頭        

android:ellipsize="middle"       省略號在中間        

android:ellipsize="end"          省略號在結尾        

android:ellipsize="marquee"      跑馬燈顯示

android:ellipsize="end" 省略號不顯示的問題

android:maxLines="1"

android:maxLength="8"

android:maxLines="1"

android:maxEms="8"

查閱 資料 可知:

表示字寬的單位。設置的android:maxEms=「10」,但是顯示11個中文,但是想要多出的字之後、之前的顯示省略號就得使用maxEms,並且必須與android:singleLine="true"使用。不與android:singleLine="true"使用時可自動換行。

指畢型的是文本的長度,比如:英文、符號、漢子手掘猜、數字等等這些都屬於文本范圍,所以android:maxLength="13" 的作用就是限制TextView只能顯示13個文本長度。大於字數之後自動截斷,不顯示省略號。

H. android textview 怎麼換行

textView如果想要強制換行的話,必須先把TextView顯示方式修改為多行(android:singleLine="false"),然後才能換行。
方法一般用兩種:

1、在字元串里加入「 」,如"abc rc";

2、把TextView設置為固定寬度,然後讓系統自動換行。如android:layout_width="100dp";

(8)androidtextview截斷擴展閱讀

Class Overview

向用戶顯示文本,並可選擇允許他們編輯文核襲本。TextView是一個完整的文改握兄本編輯器,但是基類為不允許編輯;其子類EditText允許文本編輯。

允許用戶復制部分或全部皮猜內容,將其粘貼到別的地方,設置XML屬性Android:textisselectable :「真」 或設置相關方法 settextisselectable 為「真」。textisselectable flag 允許用戶在TextView選擇手勢,從而觸發系統內置的復制/粘貼控制項。

Displays text to the user and optionally allows them to edit it. A TextView is a complete text editor, however the basic class is configured to not allow editing; seeEditTextfor a subclass that configures the text view for editing.

To allow users to some or all of the TextView's value and paste it somewhere else, set the XML attributeandroid:textIsSelectableto "true" or callsetTextIsSelectable(true). ThetextIsSelectableflag allows users to make selection gestures in the TextView, which in turn triggers the system's built-in /paste controls.

I. android讓TextView上的數據過三秒鍾自動消失

Handler mHandler = new Handler(){
dispatchMessage(){
switch(){
case DISAPEAR_TEXT:
textView文如消升字在這橋信里渣老消失
break;
}
}

}
final int DISAPEAR_TEXT = 1 ;
private void disapearafterthree(){
mHandler.sendEmptyMessageDelay(DISAPEAR_TEXT,3*1000);
}

J. android textview 長文本 界面卡頓怎麼解決

對單個item,將內容截斷在內存碼陪塵卜里暫存一個索引表,textview直接使用內存表裡讀遲兄蠢取內容;
對大量item,可以分頁刷新。(8-10個貌似不多啊,是不是有其它地方卡頓了。。)

閱讀全文

與androidtextview截斷相關的資料

熱點內容
單片機編程取反 瀏覽:894
51單片機課程設計課題 瀏覽:897
手機淘寶登錄怎麼加密碼 瀏覽:483
linux快捷方式圖標 瀏覽:37
陽光車險的app叫什麼名字 瀏覽:461
購買單片機的器件時需要給商家啥 瀏覽:534
並行編譯技術的發展 瀏覽:549
阿里雲伺服器安裝管理 瀏覽:550
java手機開發教程 瀏覽:674
我的世界怎麼刪除伺服器數據 瀏覽:671
linux內存子系統 瀏覽:972
加密思維幣 瀏覽:690
魅族訪客文件夾 瀏覽:52
添加的文件夾怎麼找 瀏覽:617
程序員涉黃 瀏覽:700
maven編譯resources下的js 瀏覽:521
ubuntu文件移動命令 瀏覽:229
安卓i怎麼查找蘋果手機 瀏覽:951
雲伺服器宕機概率 瀏覽:232
在線買葯用什麼app知乎 瀏覽:815