9

Linkify在我的应用程序中使用,访问的链接文本显示为深紫色。我的整体布局背景颜色是深蓝色,因此无法阅读。文本设置为白色,但访问过的链接显示为深紫色。我该如何覆盖这个?

<TextView android:text="Website:" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content"
          android:textSize="14dip"
          android:paddingBottom="2dip"
          android:background="#ffffff"
          android:textColor="#577dbe" />              
<TextView android:text="http://www.mysite.com/"
          android:layout_width="match_parent" 
          android:layout_height="wrap_content"
          android:textSize="12dip"
          android:paddingBottom="6dip"
          android:textColor="#ffffff"
          android:id="@+id/contactWeb1" />  
4

4 回答 4

18

原来是一个简单的解决方案

但是,您将无法进行visited/not visited区分。

    TextView contactWeb1 = (TextView) findViewById(R.id.contactWeb1);
    noteView.setText("http://www.blablaasd.com/");
    noteView.setLinkTextColor(Color.red); //for example
    Linkify.addLinks(noteView, Linkify.ALL);

试图捕捉访问状态

采用

    noteView.setLinkTextColor(getResources().getColorStateList(R.color.colors));

代替

    noteView.setLinkTextColor(Color.red);

res/创建文件夹colorcolors.xml创建res/color/

colors.xml

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

我已尽力赶上访问过的州。我尝试了选择器可以采用的所有状态。

我可能错过了如果你发现了,分享(:


替代解决方案(仅适用于 html 链接)

以编程方式设置字体颜色

缺点(注意这一点)

  • 您必须了解它是否被访问过(这是可行的)

    这意味着您不会覆盖已访问的链接功能。

代码

TextView contactWeb1 = (TextView) findViewById(R.id.contactWeb1);
String desc = "<font color=\"red\"><a href='http://www.mysite.com/'>Visit my site</a></font>";
contactWeb1.setText(Html.fromHtml(desc));
contactWeb1.setMovementMethod(LinkMovementMethod.getInstance());
于 2011-08-24T15:24:34.917 回答
0

添加:

android:textColor="#ffffff"

到 xml 中的 TextView 元素解决了问题......似乎覆盖 textcolor 覆盖了与元素相关的其他颜色样式

看到这个问题:

禁用时Android文本视图颜色不会改变

于 2011-08-18T17:26:10.337 回答
0

我试过你的代码,我的 TextView 的颜色没有改变。那么您的解决方案是将 onClick 侦听器添加到 TextView 并在其中设置 TextView 的颜色。因此,每当单击文本时,它将被设置为您指定的颜色。

于 2011-08-24T04:13:22.310 回答
0

我使用Linkify遇到了同样的问题。您可以改用LinkMovementMethod,并将您的文本转换为SpannableString

TextView contactWeb1 = (TextView) findViewById(R.id.contactWeb1);
SpannableString str = SpannableString.valueOf(contactWeb1);
str.setSpan(new URLSpan(contactWeb1.getText()), 0, str.length() -1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
contactWeb1.setMovementMethod(LinkMovementMethod.getInstance());
于 2011-08-25T15:53:47.987 回答