2

当用户单击文本视图时,我想删除突出显示的颜色。所以我可以更改所有颜色并使其成功,但是当我单击 textview 时它没有打开链接。如果我删除自动链接它的工作......

所以我的问题是如何在不使用自动链接的情况下删除突出显示?

XML 文件:

<TextView
        android:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="Customer Service"
        android:textAlignment="center"
        android:textSize="15sp"
        android:clickable="true"
        android:linksClickable="true"
        android:autoLink="web"
        android:background="@drawable/about_us_selector"
        android:textColor="@color/about_us_color" />

背景可绘制:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@color/light_gray"
        android:state_pressed="true"/>
</selector>

颜色:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
        android:color="#ffff0000"/> <!-- pressed -->
    <item android:state_focused="true"
        android:color="#ff0000ff"/> <!-- focused -->
    <item android:color="#ff000000"/> <!-- default -->
</selector>

爪哇:

String webTv1 = "<a href='http://www.google.com'> Customer Service </a>";
    tv1 = (TextView) findViewById(R.id.tv1);
    tv1.setClickable(true);
    tv1.setText(Html.fromHtml(webTv1));
    //set user name in blue color and remove underline from the textview
    Spannable spannedTv1 = Spannable.Factory.getInstance().newSpannable(
            Html.fromHtml(webTv1));
    Spannable processedText = removeUnderlines(spannedTv1);
    if (tv1 != null) {
        tv1.setText(processedText);
        tv1.setMovementMethod(LinkMovementMethod.getInstance());
    }
}

public static Spannable removeUnderlines(Spannable p_Text) {
    URLSpan[] spans = p_Text.getSpans(0, p_Text.length(), URLSpan.class);
    for (URLSpan span : spans) {
        int start = p_Text.getSpanStart(span);
        int end = p_Text.getSpanEnd(span);
        p_Text.removeSpan(span);
        span = new URLSpanNoUnderline(span.getURL());
        p_Text.setSpan(span, start, end, 0);
    }
    return p_Text;
}
4

1 回答 1

6

最后,我设法删除了突出显示:

添加另一个颜色/highlight.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#00ffffff"/>
</selector>

然后,在您的 xml 文件中定义颜色:

android:textColorHighlight="@color/hightlight.xml"

在此之前,从 XML 文件中删除自动链接...

于 2016-12-01T07:47:56.090 回答