是否有可能在TextView中设置文本跨度的颜色?
我想做一些类似于Twitter应用程序的事情,其中一部分文本是蓝色的。见下图:
(来源:twimg.com)
是否有可能在TextView中设置文本跨度的颜色?
我想做一些类似于Twitter应用程序的事情,其中一部分文本是蓝色的。见下图:
(来源:twimg.com)
当前回答
如果你想要更多的控制,你可能想检查TextPaint类。下面是如何使用它:
final ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(final View textView) {
//Your onClick code here
}
@Override
public void updateDrawState(final TextPaint textPaint) {
textPaint.setColor(yourContext.getResources().getColor(R.color.orange));
textPaint.setUnderlineText(true);
}
};
其他回答
通过传递String和Color在文本上设置颜色:
private String getColoredSpanned(String text, String color) {
String input = "<font color=" + color + ">" + text + "</font>";
return input;
}
通过调用下面的代码设置TextView / Button / EditText等文本:
TextView:
TextView txtView = (TextView)findViewById(R.id.txtView);
获取彩色字符串:
String name = getColoredSpanned("Hiren", "#800000");
在TextView上设置文本:
txtView.setText(Html.fromHtml(name));
Done
设置你的TextView的文本跨度,并为你的文本定义一个ForegroundColorSpan。
TextView textView = (TextView)findViewById(R.id.mytextview01);
Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(wordtoSpan);
另一个答案将非常相似,但不需要设置TextView的文本两次
TextView TV = (TextView)findViewById(R.id.mytextview01);
Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TV.setText(wordtoSpan);
如果你想要更多的控制,你可能想检查TextPaint类。下面是如何使用它:
final ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(final View textView) {
//Your onClick code here
}
@Override
public void updateDrawState(final TextPaint textPaint) {
textPaint.setColor(yourContext.getResources().getColor(R.color.orange));
textPaint.setUnderlineText(true);
}
};
在某些情况下可以使用的另一种方法是在接受Spannable的视图的属性中设置链接颜色。
例如,如果你的Spannable将用于TextView,你可以在XML中设置链接颜色:
<TextView
android:id="@+id/myTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorLink="@color/your_color"
</TextView>
你也可以在代码中使用:
TextView tv = (TextView) findViewById(R.id.myTextView);
tv.setLinkTextColor(your_color);