我在我的应用中使用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" />
答案 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中的TextView元素解决问题...似乎覆盖textcolor会覆盖与元素相关的其他颜色样式
看到这个问题:
答案 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());