导航:首页 > 操作系统 > androidtextview控件

androidtextview控件

发布时间:2023-06-06 13:43:30

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. android中textview控件中的文字的位置是如何调整

有2种方法可以设置TextView文字居中:x0dx0a一:在xml文件设置:android:gravity="center"x0dx0a二:在程序中设置:m_TxtTitle.setGravity(Gravity.CENTER);x0dx0ax0dx0a备注:android:gravity和android:layout_gravity的区别在于前者对控件内部操作,后者是对整个控件操作。x0dx0a例如:x0dx0aandroid:gravity="center"是对textView中文字居中x0dx0aandroid:layout_gravity="center"是对textview控件在整个布局中居中x0dx0a其实很容易理解简念,出现"layout"就是控件对整个布局的操作x0dx0ax0dx0aTextView文字垂直拦悉困靠左居中,x0dx0ax0dx0a设置android:gravity="center_vertical|left"。x0dx0ax0dx0aandroid:gravity="center", 垂直水平居中x0dx0aLinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别陆行在于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的对齐方式。x0dx0a举个例子,我们可以通过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同时我们设置EditText的android:layout_gravity="right"来让EditText组件在LinearLayout中居中显示。x0dx0a

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控件

对android不是很熟悉。
我的理解是:这个TextView是在XML里面告诉android这是一个textview控件。
然后android:text是告诉android这个textview上面显示的内容的。这个textview就只有这么一个属性,因此只能设置一次。如果是在代码里面修改的话,应该是随便你怎么改都没有问题。

E. android TextView控件如何显示数组内容

通过数组循环显示到TextView上。

1、获取数组

2、获取TextView组件

3、循环拼接数组成字符串,显示到TextView中

示例:

java">String[]arr={"a","b","c"};//定义一个数组,模拟获取到的数组
TextViewtv=(TextView)findViewById(R.id.xxxx);//获取一个TextView
Stringct="";//定义一个字符串
for(inti=0;i<arr.length;i++){
ct=ct+arr[i];//数组拼接成字符串
}
tv.setText(ct);//在TextView中显示数组内容。

F. androidstudiotextview控件失灵

点击报错一直显示的是set Content View(R.layout.loginphonenumber);这行,轮银我的布局文件是在上个学期的期末作业里直接复制过来的,并没有做修改,我网络了一下,好多人都指兄说直接在重新写一遍就可以了,然后我就重新写了一遍,然而还是没有用,然后我就在找其他错误上浪费了两个多小时(都想骂人了)

最后我也不知道要怎么搞了,就把有ImageView控件的代码全部都注释掉了,重新运行了一遍,可以了,接着,我就一个一个的把ImageView还原,只要还原就会报错,最后我将所有的drawable中的图片全部移动到了mipmap下面,将布局文件中的所有drawable全部改成mipmap,就成功了。

在运行过程中你还有可能会遇到这个错误:

Error inflating class <unknown>

Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f020004 a=-1 r=0x7f020004}

如果错误指向还是布局文件的话,那就再仔细检查一下你的布腊逗宴局文件引用图片时是否还有@drawable这个标记,有的话改了就好了

阅读全文

与androidtextview控件相关的资料

热点内容
交警app怎么绑定本人几辆车 浏览:985
彩虹六号如何人工服务器 浏览:632
mc服务器地址怎么登入 浏览:556
苹果app怎么扫描二维码下载 浏览:959
css文件在线解压 浏览:154
36岁程序员近况 浏览:283
哪里可以下载不加密的歌 浏览:934
隐藏文件夹是什么梗 浏览:918
插件注册命令 浏览:497
梁一端加密一端不加密规范 浏览:82
代码行数统计命令 浏览:104
单片机中2K表示什么 浏览:482
紫禁城为什么会断开服务器 浏览:580
华为手机的方舟编译器在哪呢 浏览:125
下载压缩虐杀原形2 浏览:907
linux脚本cd 浏览:169
间架结构pdf 浏览:845
重庆农村商业银行app怎么老出问题 浏览:473
慧编程配置要求 浏览:675
数控机床编程与操作视频 浏览:463