1

私は 1 つ持っていTextViewます。このビューでは、テキストの一部をクリックできるようにしたいと考えています。そのテキストをクリックすると、私は開きたいです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());

ここで をクリックするTERMS AND CONDITIONSとブラウザで開きますが、 で開きたいですWebView

4

4 に答える 4

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
        }
    });
于 2012-04-27T07:37:10.920 に答える
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());

テキストサイズに応じて開始位置と終了位置を変更します

于 2012-04-27T07:19:19.357 に答える
0

TextView のリンクをクリック可能にするにはどうすればよいですか?

または、水平方向の線形レイアウトを作成し、2 つのテキストビューを使用して 2 つ目のテキストビューをクリック可能にすることができます。

于 2012-04-27T06:34:29.967 に答える
0

onClick メソッドで textView 呼び出しを行ってみませんか。

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

次に、アクティビティに次のメソッドを呼び出します。

public void openWebView (View v) {
    ....
    // Do something
}
于 2012-04-27T06:39:26.590 に答える