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;
}
};