2011-09-27 16 views
16

Ho un textView e testo comeLinkify Android testo - Testo Spannable nel singolo testo View - Come come Twitter Tweet

"Questo è il testo semplice con KeyWord e la link di navigare"

nel testo di cui sopra voglio fare ..

cliccando sul link va ad aprire l'URL E click su quella parola chiave o penna una nuova attività nella mia applicazione

anche, C'è anche un evento click per l'intero TextView.

Per favore aiutatemi a trovare una soluzione. Grazie, MKJParekh

+0

Penso che dovresti controllare: 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

Beh, immagino che questo sia quello che stai cercando [Android Custom Hyperlinked TextView] (http://webcache.googleusercontent.com/search?q=cache:http://www. orangeapple.org/) –

+1

@Lalit Poptani mi ha aiutato grazie – user609239

risposta

-2

Rendi la parola chiave e il collegamento in diverse TextViews.

Quindi impostare TextView.onClickListener() dopo aver eseguito questa operazione.

Questo è il modo più semplice e più logico.

+0

sì so che posso fare così ... ma ho bisogno di prendere solo una vista del testo – MKJParekh

11

generare il TextView nel seguente modo:

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

Specificare la vostra attività nel modo seguente:

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

penso che dovrebbe funzionare. Potrebbe richiedere qualche ritocco. Non ho avuto il tempo di testarlo. Fammi sapere se funziona.

19

Che cosa si può fare è creare un personalizzato ClickableSpan come sotto,

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

E l'uso la sua onClick() per l'apertura di un'attività o URL. Sto aggiungendo una demo per il caricamento di un URL in 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

Grazie per la risposta, mi ha aiutato molto. – MKJParekh