android关于textview中部分文字设置可点击并添加下划线(虚线)

时间:2022-01-09 00:55:50
android关于textview中部分文字设置可点击并添加下划线(虚线)
如图所示,在一个textview中存在文本并设置可点击,添加下划线,虚线

 //可以为多部分设置超链接
        spanableInfo.setSpan(new Clickable(listener), start, end, Spanned.SPAN_MARK_MARK);
        spanableInfo.setSpan(new Clickable(listener), 14, 18, Spanned.SPAN_MARK_MARK);
我这样写添加了超链接,但是是实线,虚线如何是实现呢

4 个解决方案

#1


添加下划线
    textview.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线  
    textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG ); //中间横线(删除线)  
    textview.getPaint().setAntiAlias(true);// 抗锯齿  


部分文字可以点击
txt.setText("这是一条测试文本");
        SpannableString clickString = new SpannableString("可点击文本");
        clickString.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, FirstActivity.class));
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.RED);//设置颜色
            }
        }, 0, clickString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        txt.append(clickString);
        txt.append(new SpannableString("这也是一条测试文本"));
        SpannableString clickString2 = new SpannableString("我是可点击的");
        clickString2.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, SecondActivity.class));
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.BLUE); //设置颜色
            }
        }, 0, clickString2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        txt.append(clickString2);
        txt.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件

#2


引用 1 楼 z979451341 的回复:
添加下划线
    textview.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线  
    textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG ); //中间横线(删除线)  
    textview.getPaint().setAntiAlias(true);// 抗锯齿  


部分文字可以点击
txt.setText("这是一条测试文本");
        SpannableString clickString = new SpannableString("可点击文本");
        clickString.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, FirstActivity.class));
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.RED);//设置颜色
            }
        }, 0, clickString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        txt.append(clickString);
        txt.append(new SpannableString("这也是一条测试文本"));
        SpannableString clickString2 = new SpannableString("我是可点击的");
        clickString2.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, SecondActivity.class));
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.BLUE); //设置颜色
            }
        }, 0, clickString2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        txt.append(clickString2);
        txt.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件



大神那个实线能变成虚线吗?...貌似系统没有提供方法额..
android关于textview中部分文字设置可点击并添加下划线(虚线)

#3


要不利用drawableBottom属性,添加一下图片,叫你的UI帮忙做一个
https://blog.csdn.net/fuqinyijiu/article/details/53608230

#4


引用 3 楼 z979451341 的回复:
要不利用drawableBottom属性,添加一下图片,叫你的UI帮忙做一个
https://blog.csdn.net/fuqinyijiu/article/details/53608230


大佬,我的意识是..比如后台给了一个字符串数据,然后我把这个数据放到一个textveiw里面去,里面有特殊字符需要我去匹配,然后匹配到了在设置成可以点击和加虚线的,然后大神你的办法是不断向后添加数据...

#1


添加下划线
    textview.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线  
    textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG ); //中间横线(删除线)  
    textview.getPaint().setAntiAlias(true);// 抗锯齿  


部分文字可以点击
txt.setText("这是一条测试文本");
        SpannableString clickString = new SpannableString("可点击文本");
        clickString.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, FirstActivity.class));
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.RED);//设置颜色
            }
        }, 0, clickString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        txt.append(clickString);
        txt.append(new SpannableString("这也是一条测试文本"));
        SpannableString clickString2 = new SpannableString("我是可点击的");
        clickString2.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, SecondActivity.class));
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.BLUE); //设置颜色
            }
        }, 0, clickString2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        txt.append(clickString2);
        txt.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件

#2


引用 1 楼 z979451341 的回复:
添加下划线
    textview.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线  
    textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG ); //中间横线(删除线)  
    textview.getPaint().setAntiAlias(true);// 抗锯齿  


部分文字可以点击
txt.setText("这是一条测试文本");
        SpannableString clickString = new SpannableString("可点击文本");
        clickString.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, FirstActivity.class));
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.RED);//设置颜色
            }
        }, 0, clickString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        txt.append(clickString);
        txt.append(new SpannableString("这也是一条测试文本"));
        SpannableString clickString2 = new SpannableString("我是可点击的");
        clickString2.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, SecondActivity.class));
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.BLUE); //设置颜色
            }
        }, 0, clickString2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        txt.append(clickString2);
        txt.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件



大神那个实线能变成虚线吗?...貌似系统没有提供方法额..
android关于textview中部分文字设置可点击并添加下划线(虚线)

#3


要不利用drawableBottom属性,添加一下图片,叫你的UI帮忙做一个
https://blog.csdn.net/fuqinyijiu/article/details/53608230

#4


引用 3 楼 z979451341 的回复:
要不利用drawableBottom属性,添加一下图片,叫你的UI帮忙做一个
https://blog.csdn.net/fuqinyijiu/article/details/53608230


大佬,我的意识是..比如后台给了一个字符串数据,然后我把这个数据放到一个textveiw里面去,里面有特殊字符需要我去匹配,然后匹配到了在设置成可以点击和加虚线的,然后大神你的办法是不断向后添加数据...