Androidの開発はTextViewのハイパーリンクの5つの方法のソースコードの例を実現します。


AndroidがTextViewのハイパーリンクを実現するには、全部で5つの方法があります。
1.直接xmlファイルにautLink属性を配置する(簡単で使いやすく、効果は単一)
aut Link属性は全部で6つの値があります。それぞれnone(正常)、web(テキストをウェブサイトとして認識します。)、phone(テキストを電話番号として認識します。)、mail(テキストをメールアドレスとして認識します。)、map(これ、えっと、どう表現しますか?地図アプリケーションを開きます。all(テキストによって自動的に識別されます。)普通はallに設定すればいいです。この時はTextViewの電話番号、メールアドレス、ウェブリンクなどを自動的に識別します。この中で一番簡単な方法です。例えば:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:autoLink="all"
    android:text="
    android:textSize="16dp" />
2.HTML言語を使用する
TextViewは変換後のHTMLを直接表示できることを知っています。H 5の開発経験を生かして、ウェブページのハイパーリンクもTextViewで開くことができます。以下の通りです。
契約書を作成しさえすれば、これも実は簡単です。
 

 tv1.setText(Html.fromHtml("<a href='tel:18565554482'>   </a>,<a href='smsto:18565554482'>   </a>,<a href='mailto:[email protected]'>   </a>,<a href='http://www.baidu.com'>Go  </a>")); 
  tv1.setMovementMethod(LinkMovementMethod.getInstance()); 
3.stings.xmlに直接HTMLを書いてTextViewのxmlに直接引用すればいいです。
strigs.xmlの定義は以下の通りです。

<string name="tv4"><a href='tel:18565554482'>   </a>,<a href='smsto:18565554482'>   </a>,<a href='mailto:[email protected]'>   </a>,<a href='http://www.baidu.com'>Go  </a></string> 
TextViewのXML定義は以下の通りである。

<TextView 
    android:id="@+id/tv4" 
    android:layout_width="match_parent" 
    android:layout_height="48dp" 
    android:gravity="center" 
    android:text="@string/tv4" 
    android:textSize="24sp" > 
  </TextView> 
そしてActivityにこのTextViewを設定するだけでクリック可能な状態になればいいです。
tv 4.set Movement Method(Link Movement Method.get Instance(); 
4.Spannable Stringを使ってハイパーリンクを実現する(効果は多様)
Spannable Stringの使用については、他の編を参照してください。

SpannableString ss = new SpannableString("   ,   ,   ,Go  "); 
ss.setSpan(new URLSpan("tel:18565554482"), 0, 3, 
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
ss.setSpan(new URLSpan("smsto:18565554482"), 4, 7, 
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
ss.setSpan(new URLSpan("mailto:[email protected]"), 8, 11, 
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
ss.setSpan(new URLSpan("http://www.baidu.com"), 12, 16, 
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
//SpannableString     TextView 
tv3.setText(ss); 
//  TextView    
tv3.setMovementMethod(LinkMovementMethod.getInstance()); 
5.Spannable TextViewを使って実現する(効果は多様)
単一効果を設定:

 // Setup single span
SpannableTextView tv1 = (SpannableTextView) view.findViewById(R.id.tv1);
 
Span span1 =
    new Span.Builder("ForegroundSpan, BackgroundSpan, and CustomTypefaceSpan")
        .foregroundColor(R.color.purple_500)
        .backgroundColor(R.color.green_500)
        .typeface(mItalicFont)
        .build();
 
tv1.setFormattedText(span1);
多重効果の重ね合わせを設定します。

// Setup multiple spans
SpannableTextView tv2 = (SpannableTextView) view.findViewById(R.id.tv2);
 
List<Span> spans1 = new ArrayList<>();
spans1.add(new Span.Builder("ForegroundSpan")
    .foregroundColor(R.color.red_500)
    .build());
spans1.add(new Span.Builder("BackgroundSpan")
    .backgroundColor(R.color.yellow_500)
    .build());
spans1.add(new Span.Builder("ForegroundSpan and BackgroundSpan")
    .foregroundColor(R.color.orange_500)
    .backgroundColor(R.color.blue_500)
    .build());
spans1.add(new Span.Builder("ForegroundSpan, BackgroundSpan, and CustomTypefaceSpan")
    .foregroundColor(R.color.green_500)
    .backgroundColor(R.color.indigo_500)
    .typeface(mRegularFont)
    .build());
 
tv2.setFormattedText(spans1);
下線なしのハイパーリンクを実現:
カスタムのurlspanはURLSpanを継承し下線を取り除く。

  //   urlspan       
  public class URLSpanNoUnderline extends URLSpan {
    public URLSpanNoUnderline(String url) {
      super(url);
    }
 
 
    @Override
    public void updateDrawState(TextPaint ds) {
      super.updateDrawState(ds);
      ds.setUnderlineText(false);
      ds.setColor(Color.BLACK);
    }
  }
この記事は主に、Android TextViewのハイパーリンクのソースコードの例を5つ紹介します。AndroidがTextViewのハイパーリンクを実現することについて、以下の関連リンクをご覧ください。