(转载) TextView使用一些小技巧
2024-08-31 08:32:47
分类:
Android(20)
本文主要讲一些TextView的使用技巧
TextView使用频率很高,大家也都很熟悉,讲几个开发中比较实用的小属性
1、TextView竖行使用:
比较笨点的宽度设置一个字的大小,然后singLine设置false
那么比较好简单一点就是设置Textview的ems属性,即:
Android:ems="1"(后面数字是一行显示的字符多少)
2、TextView链接点击:
比如你先要点击一个TextView,跳转到某个url,这样就可以给TextView设置
一个属性,即:android:autoLink (设置是否当文本为URL链接/email/电话
号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all))
3、TextView霓虹灯效果:
大家应该都知道跑马灯效果,就不赘述了,我讲一下霓虹灯的效果吧
首先定义一个计时器,定时器用于定时发消息改变TextView字体颜色
Timer timer = new Timer();
TimerTask task_neon = new TimerTask() {
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
然后定义一个Handler,在这里面实现霓虹灯效果(也就是字体颜色改变)
handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
// 霓虹灯效果
TextView tv = (TextView) findViewById(R.id.text);
String neontext = content;
String notext = "重新键入";
String playtext = "";
if(flag){
playtext = "暂停";
}else{
playtext = "重播";
}
int len = neontext.length();
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> data1 = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> data2 = new ArrayList<Map<String, Object>>();
for (int i = 0; i < len; i++) {
Map<String, Object> target = new HashMap<String, Object>();
target.put("content", neontext.substring(i, i + 1));
target.put("color", setColor());
data.add(target);
}
for (int i = 0; i < 4; i++) {
Map<String, Object> target = new HashMap<String, Object>();
target.put("content", notext.substring(i, i + 1));
target.put("color", setColor());
data1.add(target);
}
for (int i = 0; i < 2; i++) {
Map<String, Object> target = new HashMap<String, Object>();
target.put("content", playtext.substring(i, i + 1));
target.put("color", setColor());
data2.add(target);
}
tv.setText(Utils.highlight(neontext, data));
sumbit.setText(Utils.highlight(notext, data1));
pause.setText(Utils.highlight(playtext, data2));
break;
}
super.handleMessage(msg);
}
}; timer.schedule(task_neon, 1000, 1000);
}
主要霓虹灯效果是使用Spannable实现的:
public static SpannableStringBuilder highlight(String wholeContent,
List<Map<String, Object>> data) {
SpannableStringBuilder spannable = new SpannableStringBuilder(
wholeContent); for (Map<String, Object> targetdata : data) {
Pattern p = Pattern.compile(targetdata.get("content").toString());
Matcher m = p.matcher(wholeContent);
while (m.find()) {
spannable.setSpan(
new ForegroundColorSpan(Integer.valueOf(targetdata.get("color").toString())),
m.start(), m.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return spannable;
}
还有其他的好属性可以私信我哦,谢谢啦!
个人邮箱:jsmeli@163.com
- 顶
- 1
- 踩
- 0
- 上一篇关于扫码登录的一些问题
- 下一篇混合开发交互中遇到的一些问题
- 个人资料
最新文章
- RabbitMQ Exchange &; Queue Design Trade-off
- 通过iTop Webservice接口丰富OQL的功能
- Android计数器的实现(倒计时)
- MVC中Action之间传值
- 好玩儿的expect
- RTL2832U+R820电视棒跟踪飞机轨迹教程(ADS-B)
- linux CentOS 系统下如何将php和mysql命令加入到环境变量中
- 【BZOJ】【1877】【SDOI2009】晨跑
- IOS委托设计模式(摘自IOS开发指南)
- Linux中断(interrupt)子系统
- 【从零学习openCV】opecv操作像素
- C# 基础控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印
- [js高手之路] html5 canvas系列教程 - arc绘制曲线图形(曲线,弧线,圆形)
- asp.net mvc CodeFirst模式数据库迁移步骤
- [UWP]合体姿势不对的HeaderedContentControl
- hihoCoder 树结构判定(并查集)
- 【Python3爬虫】为什么你的博客没人看呢?
- Linux如何快速跳转到文档开头或者末尾
- IntelliJ配置SpringMVC提示“found:java.lang.String required:java.lang.String”
- javascript的use strict(使用严格模式)
热门文章
- POJ 2771 最大独立集 匈牙利算法
- Activity、Fragment、ViewPage
- PHP邮件发送库:Swiftmailer
- DirectUI界面编程(三)从XML文件中加载界面
- DevExpress Report 打印提示one or more margins are set outside the printable area of the page 问题解决
- Android studio关于点击事件后的页面跳转,选择完成后返回(onActivityResult)
- JAVA在线观看视频教程完整版
- hdu 1166 敌兵布阵 【线段树】
- QA小课堂:一个网站或者APP开发要多少钱
- 初见UDP_Client