2017-04-13 17 views
0

我有一個編輯文本,它的行爲與面書中的提要類似。因此,無論何時我發佈像「www.google.com」這樣的內容,它都會顯示爲超鏈接,但同時我只要發佈類似「abcd.abcd」的內容,它也會顯示爲超鏈接。我只想在添加「http」或「www」時將鏈接顯示爲鏈接,如何實現此目的。如果在此先感謝顯示爲超鏈接的點的文本

<EditText 
       android:id="@+id/etFeedsText" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:minHeight="50dp" 
       android:maxLength="2000" 
       android:layout_marginBottom="25.8dp" 
       android:layout_marginLeft="14dp" 
       android:layout_marginTop="8.3dp" 
       android:hint="@string/enter_your_post" 
       android:background="@color/white" 
       android:inputType="textMultiLine|textNoSuggestions" 
       android:textColor="@color/feeds_text" 
       android:textSize="13.3sp" />  

回答

2

您可以比較文字&可以找到一個有效的URL或不通過這種方法,

如果文字不是一個URL然後從底部下劃線像,

if(!isValidUrl(yourUrl)){ 
    stripUnderlines(TextView textView) 
} 


private void stripUnderlines(TextView textView) { 
     Spannable s = new SpannableString(textView.getText()); 
     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 URLSpanNoUnderline(span.getURL()); 
      s.setSpan(span, start, end, 0); 
     } 
     textView.setText(s); 
    } 

它需要URLSpan的定製版本不啓用TextPaint的「下劃線」屬性:

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

希望得到這個幫助!

+0

嘿謝謝威爾遜。我會盡力讓你知道。再次感謝 –

1

只需添加到您的EDITTEXT

Linkify.addLinks(etFeedsText, Linkify.WEB_URLS); 

這將只考慮有效的URL。 如果你只是顯示數據,你也可以使用textview。 Edittext是沒有必要的。