Android,按钮,链接下划线

时间:2015-08-06 15:56:22

标签: android button hyperlink underline

我不希望按钮上的链接加下划线。我是这样做的:

string.xml

  <string name="link">&lt;a href="http://web.com/web.php">mighty&#10;web&lt;/a></string>

activity.xml

  <Button
         android:id="@+id/web"
         android:layout_width="160dip"
         android:layout_height="160dip"
         android:layout_marginLeft="2dp"
         android:background="@drawable/bigroundbutton"
         android:textColorLink="@android:color/white"
         android:textSize="30sp" />

bigroundbutton.xml

 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="oval">
 <solid android:color="#3a5795" />
 <corners android:bottomRightRadius="160dip"
    android:bottomLeftRadius="160dip"  
    android:topRightRadius="160dip"
    android:topLeftRadius="160dip"/>

activity.java

    Button but = (Button) findViewById(R.id.web);
    Spannable s = (Spannable) Html.fromHtml(getResources().getString(R.string.link));
    URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
    for (URLSpan span: spans) {
        int start = s.getSpanStart(span);
        int end = s.getSpanEnd(span);
        s.removeSpan(span);
        span = new URLSpanline_none(span.getURL());
        s.setSpan(span, start, end, 0);
    }
    but.setText(s);

    ......................

        private class URLSpanline_none extends URLSpan {
        public URLSpanline_none(String url) {
            super(url);
        }
        @Override public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
        }
    }

一切正常。 我运行apk,链接没有下划线。我轻拍它。有用。大。 然后我关闭App并再次打开它。链接带有下划线。 当我重新运行apk时,它没有再次加下划线,直到我点击它。

任何想法如何解决这个问题?是否被视为&#34;访问链接&#34;第一次点击后?我没有想法。

1 个答案:

答案 0 :(得分:0)

自行处理链接有任何问题吗?

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="mighty web"
    android:tag="http://web.com/web.php"
    android:clickable="true"
    android:onClick="openUrl"/>
public void openUrl(View v){
    String url = v.getTag().toString();
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);
}