2011-09-27 3 views
16

Tôi có một TextView và văn bản nhưAndroid Linkify văn bản - Text Spannable trong Độc Lưu Trữ - Như như Twitter tweet

"Đây là văn bản đơn giản với KeyWordLiên kết để duyệt"

trong văn bản trên tôi muốn làm ..

nhấp vào liên kết đi để mở URLclick vào đó KeyWord o viết một Hoạt động mới trong ứng dụng của tôi

cũng, Có một sự kiện nhấp cho toàn bộ TextView ngay cả.

Hãy giúp tôi tìm giải pháp. Cảm ơn bạn, MKJParekh

+0

Tôi nghĩ bạn nên kiểm tra: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/Link.html http://developer.android.com/ tài nguyên/bài viết/wikinotes-linkify.html –

+2

Vâng, tôi đoán đây là những gì bạn đang tìm kiếm [Android Custom Hyperlinked TextView] (http://webcache.googleusercontent.com/search?q=cache:http://www. orangeapple.org/) –

+1

@Litit Poptani nó đã giúp tôi cảm ơn bạn – user609239

Trả lời

6

Tôi đã sử dụng điều tương tự mà tôi đã trả lời ở đây trong This Question

Cho rằng tôi đã sử dụng LinkEnabledTextView này và điều đó trở nên dễ dàng cho tôi để làm nhiệm vụ.

-2

Đặt từ khóa và liên kết vào các TextView khác nhau.

Sau đó, đặt TextView.onClickListener() sau khi bạn thực hiện việc này.

Đây là cách dễ nhất và logic hơn.

+0

vâng tôi biết tôi có thể làm theo cách đó ... nhưng chỉ cần xem một văn bản – MKJParekh

11

Tạo TextView của mình theo cách sau đây:

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

Xác định hoạt động của bạn theo cách sau:

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

Tôi nghĩ rằng nó sẽ làm việc. Có thể yêu cầu một số tinh chỉnh. Tôi không có thời gian để kiểm tra nó. Cho tôi biết nếu nó hoạt động.

19

Những gì bạn có thể làm là tạo một tuỳ chỉnh ClickableSpan như dưới đây,

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

Và việc sử dụng onClick() của nó để mở một Activity hoặc URL. Tôi đang thêm bản trình diễn để tải URL trong 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

Cảm ơn câu trả lời, Nó đã giúp tôi rất nhiều. – MKJParekh