Bagaimana cara membuat tautan di TextView yang dapat diklik?


1004

Saya memiliki TextView berikut yang ditentukan:

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="@string/txtCredits"
    android:autoLink="web" android:id="@+id/infoTxtCredits"
    android:layout_centerInParent="true"
    android:linksClickable="true"></TextView>

di mana @string/txtCreditssumber daya string yang berisi <a href="some site">Link text</a>.

Android menyoroti tautan di TextView, tetapi tautan itu tidak menanggapi klik. Bisakah seseorang memberi tahu saya apa yang saya lakukan salah? Apakah saya harus menetapkan onClickListener untuk TextView dalam aktivitas saya untuk sesuatu yang sesederhana ini?

Sepertinya itu ada hubungannya dengan cara saya mendefinisikan sumber daya string saya. Ini tidak bekerja:

<string name="txtCredits"><a href="http://www.google.com">Google</a></string>

Tapi ini memang:

<string name="txtCredits">www.google.com</string>

Yang menyebalkan karena saya lebih suka menunjukkan tautan teks daripada menampilkan URL lengkap.


67
android: autoLink = "web" ini adalah baris utama yang perlu ditambahkan ke xml dan berfungsi seperti mantra. terima kasih @Richard
jeet.chanchawat

1
<string name = "txtCredits"> <a href=" google.com"> www.google.com </a> </ string > gunakan sttring di atas dan berfungsi. Diketahui bahwa string dalam href dan dengan anchor tag harus sama dan memiliki .com atau. * Untuk bekerja perlu memeriksa mengapa
Shaik Khader

<string name = "txtCredits"> Beberapa teks di sini <a href=" google.com"> Google </a> </ string > Untuk cuplikan di atas Klik pada beberapa teks di sini seharusnya tidak berfungsi dalam kasus saya apa yang harus saya lakukan?
Ajay Takur


android:focusable="true"memecahkan masalah saya
Khang .NT

Jawaban:


1228

Terkubur dalam demo API, saya menemukan solusi untuk masalah saya:

Link.java:

    // text2 has links specified by putting <a> tags in the string
    // resource.  By default these links will appear but not
    // respond to user input.  To make them active, you need to
    // call setMovementMethod() on the TextView object.

    TextView t2 = (TextView) findViewById(R.id.text2);
    t2.setMovementMethod(LinkMovementMethod.getInstance());

Saya menghapus sebagian besar atribut pada TextView saya untuk mencocokkan apa yang ada di demo.

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/txtCredits"/>

Itu menyelesaikannya. Cukup sulit untuk dibuka dan diperbaiki.

Penting : Jangan lupa menghapus autoLink="web"jika Anda menelepon setMovementMethod().


19
Mungkin hanya saya, tapi mengapa Anda melakukan ini dengan EditText?
Justin

1
Ternyata hanya setMovementMethod yang dibutuhkan untuk mencapai tujuan.
superarts.org

3
Sama seperti sebuah komitmen, saya telah melihat beberapa Samsung Galaxy S3 dengan OS 4.3 yang macet ketika "setMovementMethod (LinkMovementMethod.getInstance ())" digunakan, jadi pertimbangkan saja, saya harus membuat validasi sebelum menambahkannya
Jorge Aguilar

40
Sama disini. Perhatikan bahwa jika setMovementMethod () dipanggil, Anda perlu menghapus autolink = "web" di file XML, atau tautan lain tidak akan berfungsi. Terima kasih atas komentarnya
voghDev

6
Cukup gunakan atribut "autoLink" di xml Anda untuk misalnya: android: autoLink = "web"
Kalpesh

533

Saya hanya menggunakan android:autoLink="web"dan berfungsi dengan baik. Klik pada tautan membuka browser dan menampilkan halaman yang benar.

Satu hal yang bisa saya tebak adalah beberapa pandangan lain ada di atas tautan. Sesuatu yang transparan memenuhi seluruh orangtua tetapi tidak menampilkan apa pun di atas tautan. Dalam hal ini klik menuju ke tampilan ini alih-alih tautan.


3
Menambahkan lebih banyak info di atas. Mungkinkah cara saya mendefinisikan string sebagai <string name = "txtCredits"> <a href=" google.com"> Google </a> </ string >? Sepertinya ini diizinkan tetapi tidak berhasil untuk saya.
Richard

6
jika Anda menggunakan tautan otomatis, Anda tidak memerlukan bagian href. OS akan mengambil string untuk menguraikannya untuk url dan mengonversi setiap url ke tautan yang dapat diklik. Tetapi ini tidak akan menghasilkan kata google yang ditautkan ke google.com. Ini akan menampilkan www.google.com sebagai tautan.
Janusz

menggunakan autolink juga cocok untuk saya, textview tanpa orangtua sama sekali.
euther

2
android: autoLink juga berfungsi bagus untuk menghubungkan nomor telepon, alamat, dan alamat email (atau semua yang di atas).
CloudyMusic

54
Tidak, karena jawaban ini tidak berfungsi jika Anda tidak ingin menggunakan tag jangkar dengan teks tampilan yang berbeda dari URL
cprcrack

375

Setelah menghabiskan waktu dengan ini, saya telah menemukan bahwa:

  • android:autoLink="web"berfungsi jika Anda memiliki tautan lengkap dalam HTML Anda. Berikut ini akan disorot dengan warna biru dan dapat diklik:
  • Beberapa teks <a href="http://www.google.com">http://www.google.com</a>
  • Beberapa teks http://www.google.com
  • view.setMovementMethod(LinkMovementMethod.getInstance()); akan bekerja dengan yang berikut ini (akan disorot dan dapat diklik):
  • Beberapa teks <a href="http://www.google.com">http://www.google.com</a>
  • Beberapa teks http://www.google.com
  • Beberapa teks <a href="http://www.google.com">Go to Google</a>

Perhatikan bahwa opsi ketiga memiliki hyperlink, tetapi deskripsi tautan (bagian di antara tag) itu sendiri bukan tautan. android:autoLink="web"tidak TIDAK bekerja dengan link tersebut.

  • android:autoLink="web"jika diatur dalam XML akan menimpa view.setMovementMethod(LinkMovementMethod.getInstance());(yaitu; tautan dari jenis ketiga akan disorot, tetapi tidak dapat diklik).

Moral cerita ini digunakan view.setMovementMethod(LinkMovementMethod.getInstance());dalam kode Anda dan pastikan Anda tidak memiliki android:autoLink="web"tata letak XML jika Anda ingin semua tautan dapat diklik.


setMovementMethod tidak berfungsi dengan opsi kedua yang Anda sebutkan yaitu google.com .. ada pembaruan?
Darpan

16
Terima kasih telah menunjukkan bahwa <a href="http://www.google.com">Go to Google</a>itu tidak akan berfungsi untuk tautan otomatis. Untuk begitu banyak jawaban pada SO, ini adalah satu-satunya yang menyebutkannya. Terima kasih!
cwhsu

Yang ini berhasil. Diuji pada API 29.
Wrichik Basu

96

Solusi di atas tidak bekerja untuk saya, tetapi yang berikut ini berhasil (dan sepertinya sedikit lebih bersih).
Pertama, di sumber string, tentukan chevron pembuka tag Anda menggunakan pengkodean entitas HTML, yaitu:

&lt;a href="http://www.google.com">Google&lt;/a>

dan tidak:

<a href="http://www.google.com">Google</a>

Secara umum, enkode semua chevron dalam string seperti itu. BTW, tautannya harus dimulai denganhttp://

Kemudian (seperti yang disarankan di sini ) setel opsi ini di TextView Anda:

 android:linksClickable="true"

Akhirnya, dalam kode, lakukan:

((TextView) findViewById(R.id.your_text_view)).setMovementMethod(LinkMovementMethod.getInstance());
((TextView) findViewById(R.id.your_text_view)).setText(Html.fromHtml(getResources().getString(R.string.string_with_links)));

Itu saja, tidak diperlukan regex atau retasan manual lainnya.


7
Ini akan membuat Parser HTML setiap kali kode ini dieksekusi. Ketahuilah bahwa jika Anda menggunakan ini untuk membuat tautan di dalam item daftar atau di tempat-tempat penting kinerja lainnya di aplikasi Anda. Saat membuat listitem, ini meningkatkan waktu eksekusi getView Methods saya hingga 50%
Janusz

1
Perhatikan juga spasi di URL harus diganti dengan%20
Nicolas Tyler

Anda dapat menghindari masalah pengodean entitas dengan membungkus string Anda dalam <![CDATA[ ... ]]>tag.
Paul Lammertsma

1
BEKERJA untuk saya, terima kasih. Tidak bekerja dengan <![CDATA[...]]>tag.
ricky.tribbia

Ini seharusnya jawabannya! Bekerja dengan sangat baik dengan aplikasi asli saya
Ajay Kulkarni

69

saya menggunakan ini secara sederhana

Linkify.addLinks(TextView, Linkify.ALL);

membuat tautan yang dapat diklik diberikan di sini


4
Jawaban ini adalah yang terbaik. Bekerja pada setiap versi Android dan kita hanya perlu menambahkan metode itu ketika teks di set di TextView. Bonus: memungkinkan kita untuk menambahkan tautan yang dapat dikustomisasi yang dapat diklik
Kerwan

3
Sangat sederhana dan jawaban terbaik. berfungsi untuk email / web pada saat yang sama .... terima kasih man !!!
Imran Ahmed

1
Gunakan LinkifyCompat jika Anda memerlukan beberapa fitur canggih yang lebih baru
Vaiden

Bagus, itu membuat url tanpa <a href...dapat diklik
Pavel

Itu juga membuat semua tag "html" di dalam pekerjaan sesuai, misalnya <b> ... </b> dll.
Array

67

Jika Anda ingin menambahkan tautan seperti HTML, yang perlu Anda lakukan adalah:

  • tambahkan string seperti HTML sumber daya:

     <string name="link"><a href="https://www.google.pl/">Google</a></string>
  • tambahkan tampilan Anda ke tata letak tanpa konfigurasi khusus tautan:

     <TextView
        android:id="@+id/link"
        android:text="@string/link" />`
  • tambahkan MovementMethod yang sesuai secara terprogram ke TextView Anda:

     mLink = (TextView) findViewById(R.id.link);
     if (mLink != null) {
       mLink.setMovementMethod(LinkMovementMethod.getInstance());
     }

Itu dia! Dan ya, memiliki opsi seperti "tautan otomatis" dan "tautanKlik" yang hanya berfungsi pada tautan eksplisit (tidak terbungkus dalam tag html) juga sangat menyesatkan bagi saya ...


2
+1 Anda benar. Seharusnya ada opsi untuk memasukkan pola diri Anda sehingga ini cocok. Dengan cara ini sangat bodoh.
schlingel

47

Saya menambahkan baris ini ke TextView: android:autoLink="web"
Di bawah ini adalah contoh penggunaan dalam file tata letak.

layout.xml Sampel

    <TextView
        android:id="@+id/txtLostpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="email"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/lostpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/txtDefaultpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="web"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/defaultpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

string.xml

<string name="lostpassword">If you lost your password please contact <a href="mailto:support@cleverfinger.com.au?Subject=Lost%20Password" target="_top">support@cleverfinger.com.au</a></string>

<string name="defaultpassword">User Guide <a href="http://www.cleverfinger.com.au/user-guide/">http://www.cleverfinger.com.au/user-guide/</a></string>

36

Berikut ini harus bekerja untuk siapa saja yang mencari kombinasi teks dan hyperlink dalam aplikasi Android.

Dalam string.xml:

<string name="applink">Looking for Digital Visiting card? 
<a href="https://play.google.com/store/apps/details?id=com.themarkwebs.govcard">Get it here</a>
</string>

Sekarang Anda dapat memanfaatkan ini stringdalam bentuk Viewseperti ini:

<TextView
    android:id="@+id/getapp"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:gravity="center"
    android:textColor="@color/main_color_grey_600"
    android:textSize="15sp"
    android:text="@string/applink"/>

Sekarang, di Aktivitas atau Fragmen Anda, lakukan hal berikut:

TextView getapp =(TextView) findViewById(R.id.getapp);
getapp.setMovementMethod(LinkMovementMethod.getInstance());

Sekarang, Anda tidak perlu mengatur android:autoLink="web"atau android:linksClickable="true"menggunakan pendekatan ini.

Saya harap Anda akan menemukan ini bermanfaat.


Ini bekerja dengan baik, tetapi ketika Anda menekan kembali dari web dibuka, hanya tutup browser, tetapi tidak kembali ke aplikasi.
Jachumbelechao Unto Mantekilla

27

Saya harap ini akan membantu Anda;

String value = "<html>Visit my blog <a href=\"http://www.maxartists.com\">mysite</a> View <a href=\"sherif-activity://myactivity?author=sherif&nick=king\">myactivity</a> callback</html>";
    TextView text = (TextView) findViewById(R.id.text);


    text.setText(Html.fromHtml(value));
    text.setMovementMethod(LinkMovementMethod.getInstance());

3
Ini sangat bagus. Pastikan juga Anda menghapus android:autoLink=?dari TextView.
sulai

Inilah yang akhirnya berhasil untuk saya. HTML yang valid dan tidak menggunakan android:autoLink=?itu penting!
Neal Sanche

Untuk Xamarin, kata tersebut menunjukkan tetapi tidak digarisbawahi dan tidak dapat diklik menggunakan parameter di atas dan BUKAN parameter ini: autoLink, linksClickable
maxweber

Untuk pengaturan Xamarin dan pengaturan Teks atau pengaturan TextFormatted juga menghasilkan kata tetapi tidak dapat diklik atau biru / bergaris bawah. Menghapus tautan otomatis juga gagal. Menghapus hanya tautan. Klik juga gagal. Menghapus keduanya juga gagal.
maxweber

helloWorld.TextFormatted = Html.FromHtml (tautanURL); dengan dan tanpa itu juga gagal. (tidak ditautkan, bukan biru, tidak dapat diklik)
maxweber

25

Hanya apa yang Anda butuhkan untuk menambahkan ini dalam tampilan teks di xml

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:autoLink="web"/>

24

Hal termudah yang berhasil bagi saya adalah menggunakan Linkify

TextView txt_Message = (TextView) view.findViewById(R.id.txt_message);
txt_Message.setText("This is link https://www.google.co.in/");
Linkify.addLinks(txt_Message, Linkify.WEB_URLS);

dan itu akan secara otomatis mendeteksi url web dari teks di tampilan teks.


Benar, tetapi mereka tidak akan diklik.
FractalBob

Tautan dapat diklik.
Octavian Ionel

19

Richard, lain kali, Anda harus menambahkan kode ini di bawah TextView di tata letak XML sebagai gantinya.

android:autoLink="all"

Ini harusnya seperti ini.

<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/txtCredits"
    android:id="@+id/infoTxtCredits"
    android:autoLink="all"
    android:linksClickable="true">
</TextView>

Anda tidak perlu menggunakan kode ini (t2.setMovementMethod(LinkMovementMethod.getInstance()); ) untuk membuat tautan dapat diklik.

Juga, inilah kebenaran: selama Anda mengatur tautOtomatis dan linksClickable , jangan lupa untuk menambahkan ini di String.xml file sehingga link diklik akan bekerja.

<string name="txtCredits"><a href="http://www.google.com">Google</a></string>

3
Tidak bekerja untuk saya. Tautan memang dapat diklik, tetapi seluruh string ditampilkan, bukan hanya "Google". Faktanya, tidak ada jawaban di sini atau kombinasinya sejauh ini yang berhasil.
Violet Giraffe

Apakah perangkat Anda atau emulator internet diaktifkan dan disetel ke ON (wifi) atau LAN tersambung, @Violet Giraffe?
David Dimalanta

Ini. Saya tidak pernah berhasil membuat tautan yang dapat diklik menggunakan hanya atribut XML, harus menggunakan kode Java untuk itu. Itu bukan masalah besar, tapi tidak baik.
Violet Giraffe

18

dengan menggunakan linkify : Linkify mengambil sepotong teks dan ekspresi reguler dan mengubah semua kecocokan regex dalam teks menjadi tautan yang dapat diklik

TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("http://www.domain.com");
Linkify.addLinks(textView, Linkify.WEB_URLS);

Jangan lupa

import android.widget.TextView;

16

Berikut ini adalah kode android satu baris yang membuat ponsel dan url dapat dipilih dari textView, apa pun string dan data. Anda tidak perlu menggunakan tag HTML apa pun untuk ini.

TextView textView = (TextView)findViewById(R.id.textView1);
textView.setText("some url is www.google.com phone 7504567890 another url lkgndflg.com ");

// Makes the textView's Phone and URL (hyperlink) select and go.
Linkify.addLinks(textView, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS);

13

Saya perhatikan menggunakan android:autoLink="web"itu

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:autoLink="web"/>

berfungsi OK untuk URL tetapi karena saya memiliki alamat email dan nomor telepon yang ingin saya tautkan, saya akhirnya menggunakan baris android:autoLink="all"ini seperti ini

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:autoLink="all"/>

dan itu bekerja seperti pesona.


13

Kelola Tautan teks Warna Juga masukkan deskripsi gambar di sini

tv_customer_care_no.setLinkTextColor(getResources().getColor(R.color.blue));
  tv_customer_care_no.setText("For us to reach out to you, please fill the details below or contact our customer care at  18004190899 or visit our website http://www.dupont.co.in/corporate-links/contact-dupont.html ");
   Linkify.addLinks(tv_customer_care_no, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS);
   Linkify.addLinks(tv_customer_care_no, Linkify.ALL );

11

Pastikan untuk tidak menggunakan setAutoLinkMask(Linkify.ALL)saat menggunakan setMovementMethod(LinkMovementMethod.getInstance())dan Html.fromHTML()pada HTMLtautan yang diformat dengan benar (misalnya, <a href="http://www.google.com/">Google</a>).


10

Gunakan ini...

TextView.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent in=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.twitter.com/"));
                        startActivity(in);
                    }

                });

dan tambahkan izin dalam file manifes

<uses-permission android:name="android.permission.INTERNET"/>

1
Ini akan berhasil, tetapi ingatlah bahwa aplikasi mungkin tidak memerlukan izin Internet di luar TextView yang dapat diklik ini. Mungkin berlebihan dalam kasus-kasus itu
Jose_GD

2
Apakah itu benar-benar berhubungan dengan pertanyaan?
Darpan

2
Ini tidak relevan dengan pertanyaan.
afollestad

1
Ini tidak akan pernah gagal!
Skynet

Saya suka metode ini karena memungkinkan kita untuk hanya menampilkan teks jangkar daripada URL lengkap. Teks jangkar juga dapat ditata misalnya berwarna hijau dan bergaris bawah.
Bayi yang hilang

10

Anda hanya membutuhkan ini:

android:autoLink="web"

Masukkan baris ini ke TextView, yang bisa diklik dengan referensi ke web. Alamat URL ditetapkan sebagai teks dari TextView ini.

Contoh:

 <TextView
    android:id="@+id/textViewWikiURL"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:textStyle="bold"
    android:text="http://www.wikipedia.org/"
    android:autoLink="web" />

10

Jawaban yang diterima benar, TETAPI itu berarti nomor telepon, peta, alamat email, dan tautan biasa, mis http://google.com Tanpa tag href TIDAK AKAN LAGI yang dapat diklik karena Anda tidak dapat memiliki tautan otomatis dalam xml.

Satu-satunya solusi lengkap untuk memiliki SEMUA yang dapat diklik yang saya temukan adalah sebagai berikut:

Spanned text = Html.fromHtml(myString);
URLSpan[] currentSpans = text.getSpans(0, text.length(), URLSpan.class);
SpannableString buffer = new SpannableString(text);
Linkify.addLinks(buffer, Linkify.ALL);
for (URLSpan span : currentSpans) {
    int end = text.getSpanEnd(span);
    int start = text.getSpanStart(span);
    buffer.setSpan(span, start, end, 0);
}
textView.setText(buffer);
textView.setMovementMethod(LinkMovementMethod.getInstance());

Dan TextView TIDAK seharusnya android:autolink. Juga tidak perlu android:linksClickable="true"; itu benar secara default.


bagi saya itu berhasil tanpa ini, jawaban yang diterima bekerja dengan baik @Kelly dapatkah Anda memberi tahu versi android dan perangkat yang menjadi penyebab masalahnya?
Akhil Dad

Tidak berfungsi untuk myapp://skema (untuk Deep Linking).
CoolMind

7

Inilah cara saya memecahkan tautan yang dapat diklik dan Terlihat dalam TextView (dengan kode)

private void setAsLink(TextView view, String url){
        Pattern pattern = Pattern.compile(url);
        Linkify.addLinks(view, pattern, "http://");
        view.setText(Html.fromHtml("<a href='http://"+url+"'>http://"+url+"</a>"));
    }

tapi saya ingin melihat teks dan ketika mengklik teks itu mengarahkan ulang ke tautan (dibuka oleh browser)? Solusi ini tidak menyelesaikannya, bukan?
Duc Tran

6

Gunakan kode di bawah ini:

String html = "<a href=\"http://yourdomain.com\">Your Domain Name</a>"
TextView textview = (TextView) findViewById(R.id.your_textview_id);
textview.setMovementMethod(LinkMovementMethod.getInstance());
textview.setText(Html.fromHtml(html));

6

[Tested in Pre-lollipop as well as in Lollipop and above]

Anda bisa mendapatkan string HTML Anda dari backend atau dari file sumber daya Anda. Jika Anda meletakkan teks sebagai string sumber daya, pastikan untuk menambahkan CDATAtag:

<string name="your_text">![CDATA[...<a href="your_link">Link Title</a>  ...]]</string>

Kemudian dalam kode Anda perlu mendapatkan string dan menetapkannya sebagai HTML dan mengatur metode gerakan tautan:

String yourText = getString(R.string.your_text);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
   textView.setText(Html.fromHtml(yourText, Html.FROM_HTML_MODE_COMPACT));
} else {
   textView.setText(Html.fromHtml(yourText));
}

try {
   subtext.setMovementMethod(LinkMovementMethod.getInstance());
} catch (Exception e) {
   //This code seems to crash in some Samsung devices.
   //You can handle this edge case base on your needs.
}

5

Alasan Anda mengalami masalah adalah karena ia hanya mencoba mencocokkan alamat "telanjang". hal-hal seperti "www.google.com" atau " http://www.google.com ".

Menjalankan teks Anda melalui Html.fromHtml () harus melakukan trik. Anda harus melakukannya secara terprogram, tetapi berhasil.


2
Tautan di TextView berwarna berbeda dari teks lain di string, jadi saya pikir mereka dikenali sebagai tautan. Mereka tidak bisa diklik :-(
Richard

4

Tidak tahu apakah perlu menambahkan jawaban lain, tetapi untuk berjaga-jaga ...

Saya harus memburu ini di beberapa tempat tetapi akhirnya kode versi ini berfungsi.

strings.xml:

<string name="name1">&lt;a href="http://www.google.com">link text1&lt;/a></string>
<string name="name2">&lt;a href="http://www.google.com">link text2&lt;/a></string>

myactivity.xml:

<TextView 
    android:id="@+id/textview1"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_marginTop="5dp" />

<TextView 
    android:id="@+id/textview2"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_marginTop="5dp" />

myactivty.java (di onCreate ()):

TextView tv1 = (TextView)findViewById(R.id.textview1);
TextView tv2 = (TextView)findViewById(R.id.textview2);

tv1.setText(Html.fromHtml(getResources().getString(R.string.name1)));
tv2.setText(Html.fromHtml(getResources().getString(R.string.name2)));
tv1.setMovementMethod(LinkMovementMethod.getInstance());
tv2.setMovementMethod(LinkMovementMethod.getInstance());

Ini akan membuat dua hyperlink yang dapat diklik dengan teks link text1dan link text2yang mengarahkan pengguna ke google.


4

Telepon tautan otomatis tidak berfungsi untuk saya. Berikut ini bekerja seperti pesona,

TextView tv = (TextView) findViewById(R.id.emergencynos);
String html2="<br><br>Fire - <b><a href=tel:997>997</a> </b></br></br>";        
tv.append(Html.fromHtml(html2));
tv.setMovementMethod(LinkMovementMethod.getInstance());

4

Jika menggunakan TextView berbasis XML, untuk kebutuhan Anda, Anda hanya perlu melakukan dua hal:

  1. Identifikasi tautan Anda di string, seperti "ini adalah WebPage saya." Anda bisa menambahkannya dalam xml atau dalam kode.

  2. Di xml yang memiliki TextView, tambahkan ini:


android:linksClickable="true"

android:autoLink="web"

4

Tambahkan CDATA ke sumber daya string Anda

Strings.xml

<string name="txtCredits"><![CDATA[<a href=\"http://www.google.com\">Google</a>]]></string>

3

Saya menggunakan tautan otomatis untuk "menggarisbawahi otomatis" teks, tetapi hanya membuat "onClick" yang mengaturnya. (Saya mengalami masalah ini sendiri)

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:textSize="18dp"
            android:autoLink="all"
            android:text="@string/twitter"
            android:onClick="twitter"/>

public void twitter (View view)
    {
        try
        {
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://twitter.com/onaclovtech"));
            startActivity(browserIntent);

        }
        finally
        {
        }
    }

Tidak memerlukan izin apa pun, karena Anda mengalihkan niat ke aplikasi yang mengelola sumber daya tersebut, (browser IE).

Inilah yang berhasil bagi saya. Semoga berhasil.


Anda tidak membuat tautan yang dapat diklik, Anda hanya menempatkan keseluruhan TextView yang dapat diklik ... Bukan itu pertanyaannya.
clauziere

Setuju, tetapi kadang-kadang solusi yang berhasil, adalah hal yang sama. Jelas 5 tahun setelah jawaban paling populer telah ditulis, ini masih merupakan masalah, dan sudah 6 bulan sejak saya memiliki masalah yang sama, tetapi berakhir dengan solusi yang berbeda tetapi berfungsi.
onaclov2000

2

Hanya membuang begitu banyak waktu untuk mencari tahu Anda harus menggunakan getText (R.string. Apa pun) alih-alih getString (R.string. Apa pun) ...

Ngomong-ngomong, di sinilah cara kerja saya. Dengan beberapa hyperlink dalam tampilan teks yang sama juga.

    TextView termsTextView = (TextView) getActivity().findViewById(R.id.termsTextView);
    termsTextView.append("By registering your account, you agree to our ");
    termsTextView.append(getText(R.string.terms_of_service));
    termsTextView.append(", ");
    termsTextView.append(getText(R.string.fees));
    termsTextView.append(", and the ");
    termsTextView.append(getText(R.string.stripe_connected_account_agreement));

    termsTextView.setMovementMethod(LinkMovementMethod.getInstance());



            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/termsTextView"/>

contoh string

    <string name="stripe_connected_account_agreement"><a href="https://stripe.com/connect/account-terms">Stripe Connected Account Agreement</a></string>

Ini jauh lebih mudah dan mudah digunakan. Saya memiliki banyak tautan dengan teks khusus yang berfungsi dalam TextView yang ditambahkan secara dinamis karena ini. Ini membutuhkan upvotes paling mungkin. Telah memecahkan kepalaku tentang string Spanned, TextViews kustom dan metode HtmlCompat.fromHtml. Terima kasih banyak @ luca992.
Parth Patel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.