1-VIV-Android控件之TextView
零、前言
[1].今天总结一下TextView
[2].TextView在View家族的地位是:源码行数11000+,可以说是个大类
[3].TextView直接继承自View,EditText,Button,CheckBox都是它的后代
[4].TextView可以说常用至极,所以掌握TextView是必要的
[5].一些细小偏僻的点在这里综合一下,以便用时好找
一、拿一个Hello World的TextView来举例
1、代码中设置字体大小,自选尺寸
mIdTv.setTextSize(TypedValue.COMPLEX_UNIT_DIP,20);//dp
mIdTv.setTextSize(TypedValue.COMPLEX_UNIT_PT,20);//磅
mIdTv.setTextSize(TypedValue.COMPLEX_UNIT_SP,20);//sp---默认
mIdTv.setTextSize(TypedValue.COMPLEX_UNIT_PX,20);//像素
mIdTv.setTextSize(TypedValue.COMPLEX_UNIT_MM,20);//毫米
mIdTv.setTextSize(TypedValue.COMPLEX_UNIT_IN, 20);//英寸
2.append()添加字符串
mIdTv.append("--toly"); //Hello World--toly
mIdTv.append("--toly", 0, 3); //Hello World--t
3.单行显示、行尾省略
mIdTv.setSingleLine();
mIdTv.setEllipsize(TextUtils.TruncateAt.END);//结尾省略...
或
android:singleLine="true"
android:ellipsize="end"
4.跑马灯效果
android:focusable="true"
android:focusableInTouchMode="true"
android:ellipsize="marquee"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
5.SpannableString的简单使用
textview富文本,这里简单实现下图效果:
mIdTv.setText(seal());
private SpannableString seal() {
SpannableString ssSeal = new SpannableString("水杯特价¥50¥3点击购买");
//图片
Drawable drawable = getResources().getDrawable(R.mipmap.cup);
drawable.setBounds(0,0,200,200);
ImageSpan imageSpan = new ImageSpan(drawable);
ssSeal.setSpan(imageSpan, 0, 2, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
//斜体
StyleSpan styleSpan_I = new StyleSpan(Typeface.ITALIC);
ssSeal.setSpan(styleSpan_I, 2, 3, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
//粗体
StyleSpan styleSpan_B = new StyleSpan(Typeface.BOLD);
ssSeal.setSpan(styleSpan_B, 3, 4, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
//背景
BackgroundColorSpan bgSpan = new BackgroundColorSpan(Color.parseColor("#662B90F5"));
ssSeal.setSpan(bgSpan, 7, 9, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
//下划线
ssSeal.setSpan(new StrikethroughSpan(), 4,7, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
//颜色
ForegroundColorSpan colSpan = new ForegroundColorSpan(Color.CYAN);
ssSeal.setSpan(colSpan, 9, 13, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
//字大小
ssSeal.setSpan(new RelativeSizeSpan(2f), 7, 9, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
//下划线
ssSeal.setSpan(new UnderlineSpan(), 9,13, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
return ssSeal;
}
6.阴影效果
android:shadowColor="#DAA0F8"
android:shadowDx="5"
android:shadowDy="5"
android:shadowRadius="10"
7.字间距、行间距
android:letterSpacing="0.5"//设置字间距
android:lineSpacingExtra //设置行间距,如”8dp”。
android:lineSpacingMultiplier//设置行间距倍数,如“1.2”,即为1.2倍行间距
8.设置textView抗锯齿
mIdTv.getPaint().setAntiAlias(true);或
mIdTv.getPaint().setFlags(Paint.ANTI_ALIAS_FLAG);
9.添加HTML
Spanned spanned = Html.fromHtml(
"<b>toly:</b> link to" +
"<a href=\"http://www.toly1994.com\">Endless</a> ");
mIdTv.setMovementMethod(LinkMovementMethod.getInstance());//激活链接
mIdTv.setText(spanned);
10.自定义字体!!!
准备字体ygyxsziti2.0.ttf
在项目main文件夹里创建assets文件夹
mIdTv.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/ygyxsziti2.0.ttf"));//设置字体
mIdTv.setText("张风捷特烈");
11.设置可选择
android:textIsSelectable="true"
12.设置图片填充文字内部
mIdTv.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/ygyxsziti2.0.ttf"));//设置字体
Bitmap bitmap = BitmapFactory.decodeResource(
getResources(),
R.mipmap.bg4);
Shader shader = new BitmapShader(
bitmap,
Shader.TileMode.REPEAT,
Shader.TileMode.REPEAT);
mIdTv.getPaint().setShader(shader);
mIdTv.setText("张风捷特烈");
后记、
1.声明:
[1]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力
2.连接传送门:
更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
简书首发,腾讯云+社区同步更新
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
3.联系我
QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328
4.欢迎关注我的微信公众号,最新精彩文章,及时送达:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
转载:Futurice-Android 开发最佳实践
转载至:https://github.com/futurice/android-best-practices 从Futurice公司Android开发者中学到的经验。 遵循以下准则,避免重复发明轮子。若你对开发iOS或Windows Phone 有兴趣, 请看iOS Good Practices 和 Windows client Good Practices 这两篇文章。 摘要 使用 Gradle 和它推荐的工程结构 把密码和敏感数据放在gradle.properties 不要自己写 HTTP 客户端,使用Volley或OkHttp库 使用Jackson库解析JSON数据 避免使用Guava同时使用一些类库来避免65k method limit(一个Android程序中最多能执行65536个方法) 使用 Fragments来呈现UI视图 使用 Activities 只是为了管理 Fragments Layout 布局是 XMLs代码,组织好它们 在layoutout XMLs布局时,使用styles文件来避免使用重复的属性 使用多个style文件来避免单一的一个大style文件 保持你...
-
下一篇
浅析APP控件:模态弹窗与非模态弹窗
浅析APP控件:模态弹窗与非模态弹窗 在手机app应用中各种格式的弹窗效果相信大家都看过,此次分享就来谈谈关于app弹窗设计以及弹窗的适用情景。 一、弹窗的定义 1、弹窗作用 弹窗是为了让用户回应,需要用户与之交互的窗口。 ==非模态弹窗一般被设计成用来告诉用户信息内容,而模态弹窗除了告诉用户信息内容外还需要用户进行功能操作。== 2、模态弹窗 会打断用户的操作行为,强制用户必须进行操作,否则不可以进行其他操作。(Alerts/dialog,Actionbar,Popover) 3、非模态弹窗 不会影响用户操作,用户可以不与回应,通常有时间限制,出现一段时间就会自动消失。(Toast/HUD,Snackbar) 二、弹窗分类 以下将以各类弹窗的含义、作用、适用来进行浅析 Alerts/Dialog:警告框与对话框 含义:意为警告、对话,跟弹窗属性非常吻合,就是紧急状况,打扰用户的行为。 剖析:iOS中警告框称之为Alerts,作用是用来传达重要信息,并伴随着需要用户进行操作。 iOS规范中,警告框包含的元素如下:标题(必选)、描述信息(可选)、输入框(可选)、按钮(必选),必须包含标题...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL数据库在高并发下的优化方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果