2012-04-27 4 views
1

私は1つがTextViewです。このビューでは、テキストの一部をクリックできるようにしたいと思います。そのテキストをクリックすると、WebViewを開きます。アンドロイド - テキストの部分を設定するには

私は次のようでした:あなたはTERMS AND CONDITIONSをクリックした場合、それがブラウザに表示されますが、私はWebViewで開きたいここ

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()); 

を。

+0

UがTextViewのとSet setOnClickListenerまたはsetOnTouchListenerとしてタイトルを追加することができます! – NitZRobotKoder

答えて

0

How do I make links in a TextView clickable?

またはuは、水平方向が第二のTextViewのクリッカブルを作る2 textviewsを有する線形レイアウトを作成することができます..あなたがのonClickメソッドでTextViewの呼び出しにしないのはなぜ

+2

シングルテキストビュー用に実装することはできませんか? – naresh

0

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

あなたのアクティビティには、以下のメソッドがあります。

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

私は、テキストの部分をクリック可能で、全文ではないようにしたい。たとえば、 "AndroidはモバイルOSです"は1つのテキストビューです。このテキストでは、私は "モバイル"をクリック可能な残りのテキストをクリックできないようにしたいと思っています。それは明らかですか? – naresh

+0

あなたは以下のSushによって提案されたように、2つのTextViewを作成し、2番目のtextviewはクリック可能なテキストのみを含むようにすることができます。それが呼び出すメソッドは、あなたが好きなことをすることができます。例えば、別のアクティビティへの意図を起こすなどです。 – ASceresini

1

これは、それはあなたのテキストサイズ

2

別の方法に従って

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()); 

変更開始と終了位置を働くことがしてみてください、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

関連する問題