我有Button及其文本,我从string.xml中检索它,即我在strings.xml中的res/values中声明了一个Button文本
我将其文本颜色从蓝色删除为白色,但如何删除其下划线?在我的.java文件中我只使用setMovementMethod(LinkMovementMethod.getInstance());
链接clickabale ...我没有使用Linkify
,webview或类似form.Html ...一切正常.我只想删除"Google"文本下方的下划线...有没有办法在xml中执行此操作?
我甚至用过android:autoLink="all"
.但是当我使用它时,文本和按钮的颜色会发生变化,我不希望这样.
请帮忙.
TextView text=(TextView) findViewById(R.id.text); String value = " click to go google "; Spannable spannedText = (Spannable) Html.fromHtml(value); text.setMovementMethod(LinkMovementMethod.getInstance()); Spannable processedText = removeUnderlines(spannedText); text.setText(processedText);
这是你的removeUnderlines()
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; }
还创建类URLSpanNoUnderline.java
import co.questapp.quest.R; import android.text.TextPaint; import android.text.style.URLSpan; public class URLSpanNoUnderline extends URLSpan { public URLSpanNoUnderline(String p_Url) { super(p_Url); } @Override public void updateDrawState(TextPaint p_DrawState) { super.updateDrawState(p_DrawState); p_DrawState.setUnderlineText(false); p_DrawState.setColor(R.color.info_text_color); } }
使用此行还可以更改该文本的颜色 p_DrawState.setColor(R.color.info_text_color);