Android Linkify text — расширяемый текст в одиночном текстовом представлении — как твит в Твиттере

У меня есть textView и текст вроде

"Это простой текст с ключевым словом и ссылкой для просмотра"

в приведенном выше тексте я хочу сделать ..

Нажатие на ссылку открывает этот URL И нажатие на это ключевое слово открывает новое действие в моем приложении

кроме того, событие клика есть даже для всего TextView.

Пожалуйста, помогите мне найти решение. Спасибо, MKJParekh


person MKJParekh    schedule 27.09.2011    source источник
comment
Думаю, это то, что вы ищете Пользовательский текстовый вид с гиперссылкой для Android   -  person Lalit Poptani    schedule 27.09.2011
comment
Я думаю, вам следует проверить: developer.android.com/resources/samples/ApiDemos/src/com/ developer.android.com/resources/articles/wikinotes-linkify.html   -  person Nibha Jain    schedule 27.09.2011
comment
@Lalit Poptani, это помогло мне, спасибо   -  person user609239    schedule 20.06.2012


Ответы (4)


Что вы можете сделать, так это создать пользовательский 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() для открытия Activity или URL. Я добавляю демонстрацию для загрузки URL-адреса в WebView.

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());
person Lalit Poptani    schedule 20.06.2012
comment
Спасибо за ответ, он мне очень помог. - person MKJParekh; 26.06.2012

Создайте свой 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>

Я думаю, это должно сработать. Может потребоваться некоторая настройка. У меня не было времени протестировать его. Дайте мне знать, если это работает.

person AliDeo    schedule 27.09.2011

Я использовал то же самое, на что я ответил здесь в Этот вопрос

Для этого я использовал это LinkEnabledTextView, и это стало легко для мне выполнить задание.

person MKJParekh    schedule 26.06.2012

Сделайте ключевое слово и ссылку в разных TextViews.

Затем установите TextView.onClickListener() после того, как вы это сделаете.

Это самый простой способ и более логичный способ.

person coder_For_Life22    schedule 27.09.2011
comment
да, я знаю, что могу сделать так... но нужно только одно текстовое представление - person MKJParekh; 27.09.2011