Android 打造展开收起控件,并支持正则

最近有个需求,要支持展开收起、并且还需要支持文字中匹配正则,可点击之类等,所以就搞了个自定义view。

先上个图,大家可以看下效果。

展开状态

以上是展开收起的效果图。

一、支持的功能。

  1.   支持行数设置,超过行数后进行展开收起功能。
  2. 支持展开收起文案设置,颜色设置。
  3. 支持收起文案前加入特定文字,如【...收起】。
  4. 支持一切textview控件的功能。
  5. 支持正则表达式匹配文字,并且设置匹配到文字的颜色、点击事件。
  6. 支持正则表达式匹配到的文字前后加入特定符号,如【#正则匹配到的文字#】。

二、代码设置。

以下代码是全部配置,使用比较简单。

ExpandableBuilder builder = new ExpandableBuilder()
                .closeText("查看全文")
                .openText("收起")
                .limitLineCount(2)
                .ellipsisText("...")
                .openAndCloseTextColor(Color.parseColor("#40609F"))
                .regularMatch(RegularConstant.DynamicTopic.RULE, RegularConstant.DynamicTopic.RULE_PREFIX, RegularConstant.DynamicTopic.RULE_SUFFIX, 0, true)
                .regularPreAdd(RegularConstant.DynamicTopic.RULE_ADD)
                .regularSuffixAdd(RegularConstant.DynamicTopic.RULE_ADD)
                .callBack(new IExpandableCallBack() {
                    @Override
                    public void updateDrawState(TextPaint ds, String[] outData) {
                        //可以给分段的正则匹配文字设置各自的颜色、字重等
                    }

                    @Override
                    public void regularClick(String[] outData) {

                    }

                    @Override
                    public void openBack() {
                        expandableTextView.close();
                    }

                    @Override
                    public void closeBack() {
                        expandableTextView.open();
                    }
                });
        expandableTextView.setConfig(builder);
        expandableTextView.setData("这个控件真的很好用[_LinkTopic:正则,id,9],你学会了没,也可以不使用正则,看自己需要,可以设置正则文字的点击事件、颜色、并且支持在正则匹配到的文字前后加自定义符号");

 三、代码地址。

由于类比较多,大家可以移步到git地址下载,该控件已经在日活至少百万App中使用,没有任何问题,放心使用。

git地址直通车

 

原理下一篇进行讲解,好用的话,希望关注点一点,谢谢各位码友!!!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值