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/txtCredits
sumber 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.
android:focusable="true"
memecahkan masalah sayaJawaban:
Terkubur dalam demo API, saya menemukan solusi untuk masalah saya:
Link.java:
Saya menghapus sebagian besar atribut pada TextView saya untuk mencocokkan apa yang ada di demo.
Itu menyelesaikannya. Cukup sulit untuk dibuka dan diperbaiki.
Penting : Jangan lupa menghapus
autoLink="web"
jika Anda meneleponsetMovementMethod()
.sumber
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.
sumber
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:view.setMovementMethod(LinkMovementMethod.getInstance());
akan bekerja dengan yang berikut ini (akan disorot dan dapat diklik):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 menimpaview.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 memilikiandroid:autoLink="web"
tata letak XML jika Anda ingin semua tautan dapat diklik.sumber
<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!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:
dan tidak:
Secara umum, enkode semua chevron dalam string seperti itu. BTW, tautannya harus dimulai dengan
http://
Kemudian (seperti yang disarankan di sini ) setel opsi ini di TextView Anda:
Akhirnya, dalam kode, lakukan:
Itu saja, tidak diperlukan regex atau retasan manual lainnya.
sumber
%20
<![CDATA[ ... ]]>
tag.<![CDATA[...]]>
tag.saya menggunakan ini secara sederhana
membuat tautan yang dapat diklik diberikan di sini
sumber
<a href...
dapat diklikJika Anda ingin menambahkan tautan seperti HTML, yang perlu Anda lakukan adalah:
tambahkan string seperti HTML sumber daya:
tambahkan tampilan Anda ke tata letak tanpa konfigurasi khusus tautan:
tambahkan MovementMethod yang sesuai secara terprogram ke TextView Anda:
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 ...
sumber
Saya menambahkan baris ini ke
TextView
:android:autoLink="web"
Di bawah ini adalah contoh penggunaan dalam file tata letak.
layout.xml
Sampelstring.xml
sumber
Berikut ini harus bekerja untuk siapa saja yang mencari kombinasi teks dan hyperlink dalam aplikasi Android.
Dalam
string.xml
:Sekarang Anda dapat memanfaatkan ini
string
dalam bentukView
seperti ini:Sekarang, di Aktivitas atau Fragmen Anda, lakukan hal berikut:
Sekarang, Anda tidak perlu mengatur
android:autoLink="web"
atauandroid:linksClickable="true"
menggunakan pendekatan ini.Saya harap Anda akan menemukan ini bermanfaat.
sumber
Saya harap ini akan membantu Anda;
sumber
android:autoLink=?
dariTextView
.android:autoLink=?
itu penting!Hanya apa yang Anda butuhkan untuk menambahkan ini dalam tampilan teks di xml
sumber
Hal termudah yang berhasil bagi saya adalah menggunakan Linkify
dan itu akan secara otomatis mendeteksi url web dari teks di tampilan teks.
sumber
Richard, lain kali, Anda harus menambahkan kode ini di bawah TextView di tata letak XML sebagai gantinya.
Ini harusnya seperti ini.
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.
sumber
dengan menggunakan linkify : Linkify mengambil sepotong teks dan ekspresi reguler dan mengubah semua kecocokan regex dalam teks menjadi tautan yang dapat diklik
Jangan lupa
sumber
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.
sumber
Saya perhatikan menggunakan
android:autoLink="web"
ituberfungsi 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 inidan itu bekerja seperti pesona.
sumber
Kelola Tautan teks Warna Juga
sumber
Pastikan untuk tidak menggunakan
setAutoLinkMask(Linkify.ALL)
saat menggunakansetMovementMethod(LinkMovementMethod.getInstance())
danHtml.fromHTML()
padaHTML
tautan yang diformat dengan benar (misalnya,<a href="http://www.google.com/">Google</a>
).sumber
Gunakan ini...
dan tambahkan izin dalam file manifes
sumber
Anda hanya membutuhkan ini:
Masukkan baris ini ke TextView, yang bisa diklik dengan referensi ke web. Alamat URL ditetapkan sebagai teks dari TextView ini.
Contoh:
sumber
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:
Dan TextView TIDAK seharusnya
android:autolink
. Juga tidak perluandroid:linksClickable="true"
; itu benar secara default.sumber
myapp://
skema (untuk Deep Linking).Inilah cara saya memecahkan tautan yang dapat diklik dan Terlihat dalam TextView (dengan kode)
sumber
Gunakan kode di bawah ini:
sumber
[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
CDATA
tag:Kemudian dalam kode Anda perlu mendapatkan string dan menetapkannya sebagai HTML dan mengatur metode gerakan tautan:
sumber
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.
sumber
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:
myactivity.xml:
myactivty.java (di onCreate ()):
Ini akan membuat dua hyperlink yang dapat diklik dengan teks
link text1
danlink text2
yang mengarahkan pengguna ke google.sumber
Telepon tautan otomatis tidak berfungsi untuk saya. Berikut ini bekerja seperti pesona,
sumber
Jika menggunakan TextView berbasis XML, untuk kebutuhan Anda, Anda hanya perlu melakukan dua hal:
Identifikasi tautan Anda di string, seperti "ini adalah WebPage saya." Anda bisa menambahkannya dalam xml atau dalam kode.
Di xml yang memiliki TextView, tambahkan ini:
sumber
Tambahkan CDATA ke sumber daya string Anda
Strings.xml
sumber
Saya menggunakan tautan otomatis untuk "menggarisbawahi otomatis" teks, tetapi hanya membuat "onClick" yang mengaturnya. (Saya mengalami masalah ini sendiri)
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.
sumber
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.
contoh string
sumber