最近有个需求,要支持展开收起、并且还需要支持文字中匹配正则,可点击之类等,所以就搞了个自定义view。
先上个图,大家可以看下效果。
以上是展开收起的效果图。
一、支持的功能。
- 支持行数设置,超过行数后进行展开收起功能。
- 支持展开收起文案设置,颜色设置。
- 支持收起文案前加入特定文字,如【...收起】。
- 支持一切textview控件的功能。
- 支持正则表达式匹配文字,并且设置匹配到文字的颜色、点击事件。
- 支持正则表达式匹配到的文字前后加入特定符号,如【#正则匹配到的文字#】。
二、代码设置。
以下代码是全部配置,使用比较简单。
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中使用,没有任何问题,放心使用。
原理下一篇进行讲解,好用的话,希望关注点一点,谢谢各位码友!!!