我有Button及其文本,我从string.xml中检索它,即我在strings.xml中的res/values中声明了一个Button文本
<string name="Google"><a href=""http://www.google.com\">Google</a></string>
Run Code Online (Sandbox Code Playgroud)
我将其文本颜色从蓝色删除为白色,但如何删除其下划线?在我的.java文件中我只使用setMovementMethod(LinkMovementMethod.getInstance());链接clickabale ...我没有使用Linkify,webview或类似form.Html ...一切正常.我只想删除"Google"文本下方的下划线...有没有办法在xml中执行此操作?
我甚至用过android:autoLink="all".但是当我使用它时,文本和按钮的颜色会发生变化,我不希望这样.
请帮忙.
TextView text=(TextView) findViewById(R.id.text);
String value = "<html> click to go <font color=#757b86><b><a href=\"http://www.google.com\">google</a></b></font> </html>";
Spannable spannedText = (Spannable)
Html.fromHtml(value);
text.setMovementMethod(LinkMovementMethod.getInstance());
Spannable processedText = removeUnderlines(spannedText);
text.setText(processedText);
Run Code Online (Sandbox Code Playgroud)
这是你的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;
}
Run Code Online (Sandbox Code Playgroud)
还创建类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);
}
}
Run Code Online (Sandbox Code Playgroud)
使用此行还可以更改该文本的颜色 p_DrawState.setColor(R.color.info_text_color);
经过多次尝试终于我找到了解决方案。我从 string.xml 中删除了链接,并将此代码添加到我的 java 文件中。
Button btnGoogle = ( Button GoogleAlert.findViewById(
R.id.btnGoogle );
btnGoogle.setMovementMethod(
LinkMovementMethod.getInstance() );
btnGoogle.setOnClickListener( new OnClickListener()
{
@Override
public void onClick( View v )
{
Uri uri = Uri.parse(
"http://www.google.com" );
Intent intent = new Intent( Intent.ACTION_VIEW, uri );
startActivity( intent );
buyAlert.dismiss();
}
} );
Run Code Online (Sandbox Code Playgroud)
它工作得很好。
| 归档时间: |
|
| 查看次数: |
10941 次 |
| 最近记录: |