2011-09-27 13 views
16

Mam TextView i tekst jakAndroid Linkify tekst - Spannable Tekst w jednym tekście View - Jak jak Twitterze

"To jest prosty mający słowa kluczowego a link przeglądanie"

w powyższym tekście chcę zrobić ..

klikając na link idzie otworzyć ten adres I kliknięcie danego słowa kluczowego o piórka nowa Aktywność w mojej aplikacji

również, Istnieje zdarzenie kliknięcia dla całego tekstu nawet.

Proszę, pomóżcie mi znaleźć rozwiązanie. Dziękujemy, MKJParekh

+0

Myślę, że powinieneś sprawdzić: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/Link.html http://developer.android.com/ resources/articles/wikinotes-linkify.html –

+2

Cóż, domyślam się, że właśnie tego szukasz [Android Custom Hyperlinked TextView] (http://webcache.googleusercontent.com/search?q=cache:http://www. orangeapple.org/) –

+1

@Lalit Poptani pomógł mi podziękować – user609239

Odpowiedz

-2

Wprowadź słowo kluczowe i link do różnych widoków tekstowych.

Następnie ustaw TextView.onClickListener() po wykonaniu tej czynności.

Jest to najprostszy i bardziej logiczny sposób.

+0

Tak, wiem, że mogę to zrobić ... ale trzeba wziąć tylko jeden widok tekstowy – MKJParekh

11

wygenerować swój TextView w następujący sposób:

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

Określ swoją aktywność w następujący sposób:

<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> 

myślę, że powinno działać. Może wymagać pewnych poprawek. Nie miałem czasu, żeby to przetestować. Daj znać czy działa.

19

Co można zrobić, to utworzyć niestandardowy ClickableSpan jak poniżej,

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; 
    } 
} 

i wykorzystanie jej onClick() do otwierania działalności lub adresu URL. Dodaję wersję demo do ładowania adresu URL w 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()); 
+0

Dzięki za odpowiedź, Pomogło mi to bardzo. – MKJParekh

Powiązane problemy