Apa yang saya coba capai adalah memiliki hyperlink yang dapat diklik dalam teks pesan yang ditampilkan oleh AlertDialog
. Sementara AlertDialog
implementasi dengan senang hati menggarisbawahi dan mewarnai hyperlink apa pun (didefinisikan menggunakan <a href="...">
sumber daya yang diteruskan ke string Builder.setMessage
) yang disediakan tautan tidak menjadi dapat diklik.
Kode yang saya gunakan saat ini terlihat seperti ini:
new AlertDialog.Builder(MainActivity.this).setTitle(
R.string.Title_About).setMessage(
getResources().getText(R.string.about))
.setPositiveButton(android.R.string.ok, null)
.setIcon(R.drawable.icon).show();
Saya ingin menghindari menggunakan WebView
hanya menampilkan cuplikan teks.
android
user-interface
hyperlink
custom-controls
Thilo-Alexander Ginkel
sumber
sumber
Jawaban:
Jika Anda hanya menampilkan beberapa teks dan URL dalam dialog Anda, mungkin solusinya lebih sederhana
Seperti yang ditunjukkan di sini http://picasaweb.google.com/lh/photo/up29wTQeK_zuz-LLvre9wQ?feat=directlink
sumber
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Saya tidak terlalu menyukai jawaban yang paling populer saat ini karena itu secara signifikan mengubah format pesan dalam dialog.
Berikut adalah solusi yang akan menautkan teks dialog Anda tanpa mengubah gaya teks:
sumber
onCreateDialog
dariDialogFragment
. Hanya harus menetapkan kode yang dapat diklik padaonStart
diberikan yangshow
telah dipanggil untuk memohon DialogFragmentsetMessage(R.string.something)
, tidak perlu untuk secara eksplisit menghubungkan. Ini juga tidak perlu kecreate()
objek AlertDialog sebelum memanggilshow()
(dapat dipanggil pada Builder), dan karena itushow()
mengembalikan objek dialog, makafindViewById(android.R.id.message)
bisa dirantai. Bungkus semuanya dalam try-catch kalau-kalau tampilan pesan bukan TextView, dan Anda memiliki formulasi ringkas.Ini juga harus membuat
<a href>
tag untuk disorot. Harap dicatat bahwa saya baru saja menambahkan beberapa baris ke kode emmby. begitu memuji diasumber
setMessage(R.string.cool_link)
bekerja dengan<string name="cool_link"><a href="http://www.google.com">Check this link out</a></string>
Html.fromHtml("string with links", Html.FROM_HTML_MODE_LEGACY)
setMovementMethod()
adalah bagian penting di sini, jika tidak URL tidak akan dapat diklik.Sebenarnya, jika Anda hanya ingin menggunakan string tanpa berurusan dengan semua tampilan, cara tercepat adalah menemukan textview pesan dan menautkannya:
sumber
JFTR, inilah solusi yang saya temukan setelah beberapa waktu:
About.xml yang sesuai dipinjam sebagai fragmen dari sumber Android terlihat seperti ini:
Bagian-bagian penting adalah pengaturan linksClickable ke true dan setMovementMethod (LinkMovementMethod.getInstance ()).
sumber
setLinksClickable(true)
(saya kira sudah), tetapisetMovementMethod(...)
membuat semua perbedaan.Dari pada ...
... Saya sekarang menggunakan:
sumber
Cara termudah:
sumber
Semua jawaban di atas tidak akan menghapus tag html seperti, dll jika string yang diberikan berisi, saya mencoba untuk menghapus semua tag, dan ini berfungsi dengan baik untuk saya
dan custom_dialog akan seperti;
Kode di atas akan menghapus semua tag html dan menampilkan Contoh sebagai URL yang dapat diklik, semua yang lain dalam teks format html yang ditentukan.
sumber
Saya tidak benar-benar puas dengan jawaban saat ini. Ada dua hal yang penting ketika Anda ingin hyperlink yang dapat diklik dalam gaya href dengan AlertDialog:
setMessage(…)
, karena hanya Tampilan yang memungkinkan konten HTML yang dapat dikliksetMovementMethod(…)
)Berikut adalah contoh minimal yang berfungsi:
strings.xml
MyActivity.java
sumber
Saya sudah memeriksa banyak pertanyaan dan jawaban, tetapi tidak berhasil. Saya melakukannya sendiri. Ini adalah cuplikan kode di MainActivity.java.
Letakkan tag ini di res \ values \ String.xml
sumber
Saya menggabungkan beberapa opsi yang dibahas di atas untuk menghasilkan fungsi yang sesuai untuk saya. meneruskan hasilnya ke metode SetView () pembangun dialog.
sumber
Jika Anda menggunakan
DialogFragment
, solusi ini akan membantu.sumber
Bagi saya solusi terbaik untuk membuat dialog kebijakan privasi adalah:
periksa contoh yang berfungsi: tautan aplikasi
sumber
Saya melakukan ini dengan menetapkan kotak peringatan di sumber XML dan memuatnya. Lihat misalnya about.xml (lihat id ABOUT_URL) yang akan dipakai di akhir ChandlerQE.java . Bagian yang relevan dari kode java:
sumber
Ini solusi saya. Ini membuat tautan normal tanpa melibatkan tag html dan tanpa URL apa pun yang terlihat. Itu juga membuat desain tetap utuh.
sumber
Cara termudah dan terpendek adalah seperti ini
Tautan Android dalam dialog
sumber