web-dev-qa-db-ja.com

Android Linkifyテキスト-シングルテキストビューのスパン可能なテキスト-Twitterのツイートのように

私はtextViewと次のようなテキストを持っています

「これはKeyWordLinkを参照する単純なテキストです」

上記のテキストで私は作りたいです。

リンクをクリックするとそのURLが開きます AND そのキーワードをクリックするとアプリケーションで新しいアクティビティが開きます

また、TextView全体にもクリックイベントがあります。

解決策を見つけるのを手伝ってください。ありがとう、MKJParekh

20
MKJParekh

私はここで答えたのと同じものを使用しました この質問

そのために私はこれを使用しました LinkEnabledTextView そしてそれは私がタスクを実行するのが簡単になります。

5
MKJParekh

あなたができることは、以下のようにカスタムClickableSpanを作成することです。

_class MyCustomSpannable extends ClickableSpan
{
    String Url;
    public MyCustomSpannable(String Url) {
        this.Url = Url;
    }
    @Override
    public void updateDrawState(TextPaint ds) {
            // Customize your Text Look if required
        ds.setColor(Color.YELLOW);
        ds.setFakeBoldText(true);
        ds.setStrikeThruText(true);
        ds.setTypeface(Typeface.SERIF);
        ds.setUnderlineText(true);
        ds.setShadowLayer(10, 1, 1, Color.WHITE);
        ds.setTextSize(15);
    }
    @Override
    public void onClick(View widget) {
    }
    public String getUrl() {
        return Url;
    }
}
_

そして、そのonClick()を使用してアクティビティまたはURLを開きます。 WebViewにURLをロードするためのデモを追加しています。

_String text = "http://www.google.co.in/";
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(text);
MyCustomSpannable customSpannable = new MyCustomSpannable(
                                               "http://www.google.co.in/"){

            @Override
            public void onClick(View widget) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(customSpannable.getUrl()));
                startActivity(intent);
            }
        };
        stringBuilder.setSpan(customSpannable, 0, text.length(),
                                         Spannable.SPAN_INCLUSIVE_INCLUSIVE);

        textView.setText( stringBuilder, BufferType.SPANNABLE );
        textView.setMovementMethod(LinkMovementMethod.getInstance());
_
21
Lalit Poptani

次の方法でTextViewを生成します。

TextView t3 = (TextView) findViewById(R.id.text3);
t3.setText(Html.fromHtml("This is the Simple Text with 
    <a href=\'http://www.google.com\'>Keyword</a> and the 
    <a href='startActivityFromLink://some_info'>Link</a> to browse"));
t3.setMovementMethod(LinkMovementMethod.getInstance());

次の方法でアクティビティを指定します。

<activity Android:name=".TestActivity"
      Android:label="@string/app_name">
    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />
        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <data Android:scheme="startActivityFromLink" />
        <action Android:name="Android.intent.action.VIEW" />
        <category Android:name="Android.intent.category.BROWSABLE" />
        <category Android:name="Android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

私はそれがうまくいくはずだと思います。微調整が必​​要な場合があります。私はそれをテストする時間がありませんでした。動作するかどうか教えてください。

12
AliDeo