2011-09-27 37 views
16

我有一个TextView和文字一样的Android Linkify文本 - 在单文本视图Spannable文字 - 像Twitter的鸣叫

“这是关键字的简单文本和链接浏览”

在上面的文字我想使..

点击链接去打开URL点击该关键字Ø在我的应用程序中笔新活动

甚至有整个TextView的点击事件。

请帮我找到解决方案。 谢谢, MKJParekh

+0

我想你应该检查:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/Link.html http://developer.android.com/资源/文章/ wikinotes-linkify.html –

+2

嗯,我想这就是你要找的[Android自定义超链接TextView](http://webcache.googleusercontent.com/search?q=cache:http://www。 orangeapple.org/) –

+1

@Lalit Poptani它帮助我感谢你 – user609239

回答

-2

使关键字和链接到不同的TextViews。

然后在完成后设置TextView.onClickListener()。

这是最简单的方式,更多的逻辑方式。

+0

是的,我知道我可以这样做......但只需要一个文本视图 – MKJParekh

11

生成以下方式你的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> 

,我认为它应该工作。可能需要一些调整。我没有时间去测试它。让我知道它是否有效。

19

你可以做的是创建一个自定义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()); 
+0

感谢您的答案,它帮助了我很多。 – MKJParekh