文档章节

TextView设置LengthFilter,粘贴超长文本的时候没有提示的解决方法

丁佼
 丁佼
发布于 2015/06/02 15:11
字数 379
阅读 593
收藏 4

TextView设置LengthFilter,正常情况下用户字符超长则会有提示。

但是,如果是粘贴文字,比如限制最大100字,当文本框已有50字,一次性粘贴51字,可以看到最后一个字会丢失,但是不会弹出提示。

总之洒家之前的判断条件是错了,打了一下午的log,新算出一个条件来。。。

记录+分享~

private static class TextLengthFilter extends InputFilter.LengthFilter {

    private Context mContext;
    private int mLen;

    public TextLengthFilter(Context context, int len) {
        super(len);
        mLen = len;
        mContext = context;
    }

    @Override
    public CharSequence filter(CharSequence source, int start, int end,
                               Spanned dest, int dstart, int dend) {
        Log4j.e("dj", "TextLengthFilter.filter,dest.length()=" + dest.length() + ";source.length()=" + source.length() + ";start=" + start + ";end=" + end + ";dstart=" + dstart + ";dend=" + dend);
        // 从log来看,dest表示文本框原有的内容,source表示新的内容
        // start、end 表示新内容截取的起始、终止位置~没看出有什么作用
        // dstart、dend 表示需要从dest截取掉的字符串起始、终止位置。想看效果的话请这么做:输入10个字符,选取范围2-5字符,然后粘贴。或者删除一个字符。
        
        // dest的长度减去被删除的长度,为文本框将保留的原内容长度
        int keepLen = dest.length() - (dend - dstart); 
        int insertLen = source.length();
        int newLen = keepLen + insertLen;
        Log4j.e("dj", "TextLengthFilter.filter,keepLen="+keepLen+";insertLen="+insertLen+";newLen="+newLen);
        if (newLen > mLen) {
            Toast.makeText(mContext, "客观,请不要这样", Toast.LENGTH_SHORT).show();
        }
        return super.filter(source, start, end, dest, dstart, dend);
    }
}



© 著作权归作者所有

丁佼
粉丝 5
博文 26
码字总数 9215
作品 0
连云港
程序员
私信 提问
Android控件笔记——使用TextView实现跑马灯效果

1、如何在Android中显示长文本? 在Android中,当我们要显示长文本的时候,如果不做任何操作,仅仅是在TextView中显示,则会自动换行。

落叶-归根
2016/05/12
87
1
自定义 View 中的文字测量和绘制

jordan-whitt 之前做 LeafLoadingView 的时候,进度到达 100 后,需要将风扇替换为文字。这里的文字当时还是让我头疼了一会的,不过最终用缩放解决了问题。这让我不禁想,安卓 sdk 中肯定有绘...

Arnold_J
2018/01/03
0
0
TextView属性大全+单行显示长文本

android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all) android:autoText如果设置,将自动执行输入值的拼写纠正。...

长平狐
2013/07/01
1K
0
Android TextView利用measureText自适应文本字体大小宽度

Android TextView利用measureText自适应文本字体大小宽度 常常有这种情况,UI设计师限定一个文本TextView的宽度值比如80dip,但是该文本长度很长,于是造成文本不能正常显示,针对这种长文本...

zhangphil
2018/04/11
0
0
Android TextView前加图标垂直居中第一行(仿大众点评购买须知/提示语)

如上图,需求在每条提示语句前加一个小圆点,我刚看到需求就想到用 android:drawableLeft 来做,可做完发现:当TextView内容为单行的时候是没有问题的,多行的时候,添加的这个drawableLeft就...

yaly
2016/01/05
926
0

没有更多内容

加载失败,请刷新页面

加载更多

老也有错?35岁程序员是一道坎,横亘在每个技术职场人的心中

随着互联网的高速发展变革,大龄恐惧症越来越多地在技术圈被人讨论。很多程序员在工作5-10年以后,都会开始思考5年、10年甚至更久以后的自己,会是怎样一种生活工作状态,以及是否会被时代抛...

我最喜欢三大框架
27分钟前
1
0
今日头条算法原理详解全集,值得收藏!

今天,算法分发已经是信息平台、搜索引擎、浏览器、社交软件等几乎所有软件的标配,但同时,算法也开始面临质疑、挑战和误解。今日头条的推荐算法,从 2012 年 9月第一版开发运行至今,已经经...

骚年锦时
39分钟前
4
0
零拷贝:用户态视角

在Linux系统越来越多的人听说过所谓的零拷贝技术,但是我经常遇到很多对这个名词没有完全理解的人。因此,我决定写一些文章,深挖这个问题,希望能揭开这个有用的特性。在这篇文章,我们从用...

凌渡
51分钟前
0
0
以太坊中文文档翻译-区块

本文原文链接 点击这里获取Etherscan API 中文文档(完整版) 完整内容排版更好,推荐读者前往阅读。 区块(Blocks) 区块相关的 API,接口的参数说明请参考Etherscan API 约定, 文档中不单独...

Tiny熊
59分钟前
2
0
Linux 内核的一个问题

是virtio 驱动,但是没有启动 virtio-mmio virtio-mmio.0: Failed to enable 64-bit or 32-bit DMA. Trying to continue, but this might not work.....[ 1.047924] md: ... autorun......

MtrS
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部