androidtextview底部
⑴ 請問android編程中,textview裡面放了很多文字,怎樣拖動textview讓下面的內容顯示出來。
還是我來告訴你吧!TextView本身不具備這樣的功能。你可以把你的TextView放到一個ScrollView裡面。固定ScrollView的寬(layout_width)和高(layout_height);把TextView的layout_width設為fill_parent,layout_height設為wrap_content.這樣就可以實現相應的效果了。希望能幫到你!
⑵ 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
⑶ 2021-09-15 TextView屬性大全
TextView 是用於顯示字元串的組件,對於用戶來說就是屏幕中一塊用於顯示文本的區域。
TextView 類的層次關系如下:
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
直接子類:
Button,
CheckedTextView,
Chronometer,
DigitalClock,
EditText
間接子類:
AutoCompleteTextView,
CheckBox,
CompoundButton,
ExtractEditText,
MultiAutoCompleteTextView,
RadioButton,
ToggleButton
TextView 類方法
前面是方法,中間解釋,後面為方法的返回值
getDefaultMovementmethod //獲取默認的箭頭按鍵移動方式 //Movementmethod
getText //獲得TextView 對象的文本 //CharSquence
length //獲得TextView 中的文本長度 //Int
getEditableText //取得文本的可編輯對象,通過 這個對象可對TextView 的文本進行操作,如在游標之後插入字元 //Void
getCompoundPaddingBottom //返回底部填充物 //Int
setCompoundDrawables //設置圖像顯示的位置,在 設置該Drawable 資源之前需要調用setBounds(Rect) //Void
//設置Drawable 圖像的顯示位置,但其邊界不變 //Void
setPadding //根據位置設置填充物 //Void
getAutoLinkMask //返回自動連接的掩碼 //Void
setTextColor //設置文本顯示的顏色 //Void
setHighlightColor //設置文本選中時顯示的顏色 //Void
setShadowLayer //設置文本顯示的陰影顏色 //Void
setHintTextColor //設置提示文字的顏色 //Void
setLinkTextColor //設置鏈接文字的顏色 //Void
setGravity //設置當TextView 超出了文本本身時橫向以及垂直對齊 //Void
getFreezesText //設置該視圖是否包含整個文本,如果包含則返回真值,否則返回假值 //Boolean
屬性
android:autoLink //設置是否當文本為URL 鏈接/email/電話號碼/map 時,文本顯示為可點擊的鏈接。可選值(none/web/email/phone/map/all)
android:autoText //如果設置,將自動執行輸入值的拼寫糾正。此處無效果,在顯示輸入法並輸入的時候起作用。
android:bufferType //指定getText()方式取得的文本類別。選項editable 類似於StringBuilder 可追加字元,也就是說getText 後可調用append 方法設置文本內容。
android:capitalize //設置英文字母大寫類型。此處無效果,需要彈出輸入法才能看得到,參見EditView 此屬性說明。
android:cursorVisible //設定游標為顯示/隱藏,默認顯示。
android:digits //設置允許輸入哪些字元。如「1234567890.+-*/%\n()」
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:ellipsize //設置當文字過長時,該控制項該如何顯示。有如下值設置:」start」—–省略號顯示在開頭;」end」——省略號顯示在結尾;」middle」—-省略號顯示在中間;」marquee」 ——以跑馬燈的方式顯示(動畫橫向移動)
android:freezesText //設置保存文本的內容以及游標的位置。
android:gravity //設置文本位置,如設置成「center」,文本將居中顯示。
android:hint //Text 為空時顯示的文字提示信息,可通過textColorHint 設置提示信息的顏色。比較奇怪的是TextView 本來就相當於Label,怎麼會不設置Text?!
android:includeFontPadding //設置文本是否包含頂部和底部額外空白,默認為true。
android:inputMethod //為文本指定輸入法,需要完全限定名(完整的包名)。
android:linksClickable //設置鏈接是否點擊連接
android:marqueeRepeatLimit //在ellipsize 指定marquee 的情況下,設置重復滾動的次數,當設置為marquee_forever 時表示無限次。
android:ems //設置TextView 的寬度為N 個字元的寬度。
android:maxEms //設置TextView 的寬度為最長為N 個字元的寬度。
android:minEms //設置TextView 的寬度為最短為N 個字元的寬度。
android:maxLength //限制顯示的文本長度,超出部分不顯示。
android:lines //設置文本的行數,設置兩行就顯示兩行,即使第二行沒有數據。
android:maxLines //設置文本的最大顯示行數,與width 或者layout_width 結合使用,超出部分自動換行,超出行數將不顯示
android:minLines //設置文本的最小行數,與lines 類似。
android:lineSpacingExtra //設置行間距。
android:lineSpacingMultiplier //設置行間距的倍數。
android:password //以小點」.」顯示文本
android:phoneNumber //設置為電話號碼的輸入方式。
android:scrollHorizontally //設置文本超出TextView 的寬度的情況下,是否出現橫拉條。
android:shadowColor //指定文本陰影的顏色,需要與 shadowRadius 一起使用。
android:shadowRadius //設置陰影的半徑。
android:shadowDx //設置陰影橫向坐標開始位置。
android:shadowDy //設置陰影縱向坐標開始位置。
android:singleLine //設置單行顯示。
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(毫米)。
android:maxWidth //設置文本區域的最大寬度
android:minWidth //設置文本區域的最小寬度
原文鏈接: https://blog.csdn.net/Adomner/article/details/52263987