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

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

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

Android 打造展开收起控件,并支持正则_第1张图片Android 打造展开收起控件,并支持正则_第2张图片

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

一、支持的功能。

  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地址直通车

 

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

你可能感兴趣的:(自定义view,android,android,studio,java)