Android Linkify链接textColor被忽略,css样式覆盖可能吗?

时间:2011-08-18 17:19:00

标签: android textview override linkify textcolor

我在我的应用中使用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 个答案:

答案 0 :(得分: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/创建文件夹color并在colors.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链接)

以编程方式设置字体颜色

缺点(注意这一点)

  • 你必须要知道它是否被访问过(这是可行的)

      

    这意味着您没有覆盖访问过的链接功能。

CODE

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());

答案 1 :(得分:0)

添加:

android:textColor="#ffffff"

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

看到这个问题:

Android text view color doesn't change when disabled

答案 2 :(得分:0)

我尝试了你的代码,我的TextView的颜色没有变化。那么你的解决方案就是在TextView中添加一个onClick监听器,并在其中设置TextView的颜色。因此,无论何时单击文本,它都将设置为您指定的颜色。

答案 3 :(得分: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());