我是靠谱客的博主 舒服母鸡,最近开发中收集的这篇文章主要介绍TextView使用一些小技巧,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文主要讲一些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



最后

以上就是舒服母鸡为你收集整理的TextView使用一些小技巧的全部内容,希望文章能够帮你解决TextView使用一些小技巧所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部