2012-04-27 44 views
1

我有一個TextView。在這個視圖中,我想讓它作爲文本的一部分是可點擊的。如果您點擊該文字,然後我想打開WebViewandroid - 如何設置文本的部分是可點擊的

我做了如下的方式:

textView.setText(Html.fromHtml("I have read and agree to the " + 
        "<a href='id.web.freelancer.example.TCActivity://Kode'>TERMS AND CONDITIONS</a>")); 
textView.setClickable(true); 
textView.setMovementMethod(LinkMovementMethod.getInstance()); 

在這裏,如果你點擊TERMS AND CONDITIONS然後在瀏覽器中打開,但我想在WebView打開它。

+0

U可以添加標題爲一個TextView和SET setOnClickListener或setOnTouchListener! – NitZRobotKoder 2012-04-27 06:39:59

回答

0

你爲什麼不做出的onClick方法TextView的呼叫:

<TextView 
    ... 
    android:onClick"openWebView" 
    ... 
/> 

然後只需在您的活動中調用以下方法:

public void openWebView (View v) { 
    .... 
    // Do something 
} 
+0

我想讓文字的部分可以點擊而不是全文。例如「Android是手機操作系統」就是一個textview。在這個文本中,我想讓「移動」是可點擊的文本的其餘部分是不可點擊的。清楚嗎? – naresh 2012-04-27 06:50:27

+0

那麼你可以按照Sush下面的建議來做,然後製作兩個TextView,第二個textview只包含你想要點擊的文本。那麼它調用的方法可以做任何你喜歡的事情,比如向另一個活動發起一個意圖等。 – ASceresini 2012-04-27 06:59:06

1

試試這個可能它的工作原理

SpannableString span = new SpannableString(
     "Click here to for gmail page."); 


    span.setSpan(new URLSpan("http://www.gmail.com"), 6, 10, 
       Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

    TextView tv = (TextView) findViewById(R.id.text); 
    tv.setText(span); 
    tv.setMovementMethod(LinkMovementMethod.getInstance()); 

變化的開始和結束位置,根據您的文字大小

2

的另一種方式,借鑑了Linkify了一點,但允許您自定義操作。

定製跨度類:

public class ClickSpan extends ClickableSpan { 

    private OnClickListener mListener; 

    public ClickSpan(OnClickListener listener) { 
     mListener = listener; 
    } 

    @Override 
    public void onClick(View widget) { 
     if (mListener != null) mListener.onClick(); 
    } 

    public interface OnClickListener { 
     void onClick(); 
    } 
} 

輔助功能:

public static void clickify(TextView view, final String clickableText, 
    final ClickSpan.OnClickListener listener) { 

    CharSequence text = view.getText(); 
    String string = text.toString(); 
    ClickSpan span = new ClickSpan(listener); 

    int start = string.indexOf(clickableText); 
    int end = start + clickableText.length(); 
    if (start == -1) return; 

    if (text instanceof Spannable) { 
     ((Spannable)text).setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
    } else { 
     SpannableString s = SpannableString.valueOf(text); 
     s.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     view.setText(s); 
    } 

    MovementMethod m = view.getMovementMethod(); 
    if ((m == null) || !(m instanceof LinkMovementMethod)) { 
     view.setMovementMethod(LinkMovementMethod.getInstance()); 
    } 
} 

用法:

clickify(textView, clickText,new ClickSpan.OnClickListener() 
    { 
     @Override 
     public void onClick() { 
      // do something 
     } 
    }); 
+0

有沒有辦法給文本的可點擊部分上色? – Senhor 2015-01-27 09:13:42

相關問題