天天看點

spnnableBuilder 實作Android 表情 高亮字型 及 點選事件colorfulText

colorfulText

lib for spannableString

如果你對部落格不趕興趣

直接去下載下傳

能幹什麼?

1、利用SpannableString 、SpannableBuilder、ClickableSpan 實作TextView 部分字元高亮 、表情替換

2、 封裝 spannableString 其他的功能 實作 文字部分字型 、換色 、背景 、style、下劃線、删除線、替換圖檔、插入圖檔 等功能

spnnableBuilder 實作Android 表情 高亮字型 及 點選事件colorfulText
spnnableBuilder 實作Android 表情 高亮字型 及 點選事件colorfulText

3、封裝、分離 TextView 部分字型内容點選事件及TextView 點選事件

內建

allprojects {
    repositories {
        jcenter()
    }
}
           
dependencies {
    implementation 'org.zhx.common:colorfulText:1.0.0'
 }
           

非Androidx 項目 :

gradle.properties中 添加:

android.useAndroidX=true
android.enableJetifier=true
           

單一 屬性 修改

Builder builder = new Builder(this)
               .source("顔色大小背景粗細插入圖檔中劃線下劃線點選")
               .target("顔色")// 變色的 文字
               .textColor(R.color.colorAccent);
       TextView textView = findViewById(R.id.test_text1);
       builder.bind(textView);
           

多屬性 修改

Builder builder = new Builder(this)
               .targets("點選")// 變色的 文字
               .textColor(R.color.colorPrimary)
               .pressdColor(R.color.colorAccent)
               .spanClick(new TargetClick() {
                   @Override
                   public void onClick(String target) {
                       Toast.makeText(MainActivity.this, target, Toast.LENGTH_SHORT).show();
                   }
               });

       Builder builder1 = new Builder(this)
               .targets("顔色")// 變色的 文字
               .textColor(R.color.colorAccent)
               .pressdColor(R.color.colorPrimary)
               .spanClick(new TargetClick() {
                   @Override
                   public void onClick(String target) {
                       Toast.makeText(MainActivity.this, target, Toast.LENGTH_SHORT).show();
                   }
               });
       //.......所有builder 都可以疊加
       TextView textView = findViewById(R.id.test_text7);
       ColorfulText text = new ColorfulText();
       text.init("顔色大小背景粗細插入圖檔中劃線下劃線點選");
       text.onClickListener = new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               Toast.makeText(MainActivity.this, "textView", Toast.LENGTH_SHORT).show();
           }
       };
       //...............所有builder 都可以疊加
       text.creat(builder, builder1);
       text.into(textView);
           

表情 替換 按指定的 正規表達式替換

Builder builder = new Builder(this);
        builder.source("發送表情[色][色][色][色][吉他][吉]");
        builder.pattenStr("\\[[^\\]]+\\]", new OnPatternFind() {
            @Override
            public int onFind(String target) {
                Log.i("!!!!", target);
                return "[色]".equals(target) ? R.mipmap.emoji_02 : R.mipmap.emoji_107;
            }
        });
        TextView textView = findViewById(R.id.test_text11);
        builder.bind(textView);
           

多關鍵字 修改

TextView textView = findViewById(R.id.test_text6);
        Builder builder = new Builder(this)
                .source("顔色大小背景粗細插入圖檔中劃線下劃線點選")
                .targets("點選", "顔色")// 變色的 文字
                .textColor(R.color.colorPrimary)
                .pressdColor(R.color.colorAccent)
                .spanClick(new TargetClick() {
                    @Override
                    public void onClick(String target) {
                        Toast.makeText(MainActivity.this, target, Toast.LENGTH_SHORT).show();
                    }
                });

        builder.bind(textView);
           

未完待續 檢視demo