androidtextview圖片
A. 怎麼把一個textview的背景圖片設置成圓角的
在drawable文件夾下新建一個文件設置背景樣式
代碼:
在drawable文件夾下面新建text_view_border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#80858175" />
<stroke android:width="1dip" android:color="#aea594" />
<corners android:topleftradius="2dp"
android:toprightradius="2dp"
android:bottomrightradius="2dp"
android:bottomleftradius="2dp"/>
</shape>
在布局文件調用:
<textview
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/text_view_border" />
在類文件中調用:
tv.setbackgroundresource(r.drawable.text_view_border);
分析:
solid設置填充顏色,顏色值以#80開頭表示透明
stroke 設置邊框寬度,顏色值
corners設置圓角
B. android開發如何在一個矩形框中顯示圖片和文字
如果是初學者的話,教你一個簡單的。用
<RelativeLayout
android:background="#FFFFFF"
>
<View
android:layout_width="wrap_content"
android:layout_height="2dip"
android:layout_marginRight="40dip"
android:layout_marginLeft="40dip"
android:background="#000000"/>
就是背景顏色用白色,你自己用View畫四個邊。就是矩形的圖形。顯示圖片和文字就可以直接分別用ImageView和TextView啦。
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 設置背景色
通常來說,每個界面都對應一個activity。而在activity的View視圖中,可以在最外層容器去設置背景圖片或背景顏色。
在xml布局裡:
android:background="@drawable/img1"
或者
android:background="@color/white"
在java代碼里,也可以設置
layout.setBackgroundColor(R.color.white);
layout.setBackgroundDrawable(drawable);
layout.setBackgroundResource(R.drawable.img1);
再者,系統默認的背景色是能過theme來控制的,就是說創建一個activity的背景色,如果在
AndroidManifest.xml文件里有設置如下:
android:theme="@android:style/Theme"
這樣設置activity的主題樣式,"@android:style/Theme"一般是系統默認的。這個不單是背景色,還有其它的樣式,具體可以在網上查一下android:theme的用法。
而"@android:style/Theme"的背景色就是黑色。
E. android textview 怎麼轉義html標簽
Android中的TextView,本身就支持部分的Html格式標簽。這其中包括常用的字體大小顏色設置,文本鏈接等。使用起來也比較方便,只需要使用Html類轉換一下即可。比如:
textView.setText(Html.fromHtml(str));
一、實現TextView里的文字有不同顏色
import android.text.Html;
TextView t3 = (TextView) findViewById(R.id.text3);
t3.setText(Html.fromHtml( "<b>text3:</b> Text with a " + "<a href="http://www.google.com">link</a> " +"created in the Java source code using HTML."));
二、TextView顯示html文件中的圖片
要讓TextView解析和顯示Html代碼。可以使用
Spanned text = Html.fromHtml(source);
tv.setText(text);
來實現,這個用起來簡單方便。
但是,怎樣讓TextView也顯示Html中<image>節點的圖像呢?
可以看到fromHtml還有另一個重構:
fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
實現一下ImageGetter就可以讓圖片顯示了:
ImageGetter imgGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
Drawable drawable = null;
drawable = Drawable.createFromPath(source); // Or fetch it from the URL
// Important
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable
.getIntrinsicHeight());
return drawable;
}
};