Saya mengubah warna judul AlertDialog menggunakan perintah ini
alert.setTitle( Html.fromHtml("<font color='#FF7F27'>Set IP Address</font>"));
Tapi saya ingin mengubah warna garis yang muncul di bawah judul; bagaimana saya bisa melakukan itu?
Catatan: Saya tidak ingin menggunakan tata letak khusus
android
android-alertdialog
Mohammed Subhi Sheikh Quroush
sumber
sumber
Jawaban:
Sayangnya, ini bukanlah tugas yang mudah untuk diselesaikan. Dalam jawaban saya di sini , saya merinci cara menyesuaikan warna a
ListSeparator
dengan hanya memeriksa gaya induk yang digunakan oleh Android, membuat gambar baru, dan membuat gaya baru berdasarkan aslinya. Sayangnya, tidak sepertiListSeparator
gaya 's,AlertDialog
tema bersifat internal, dan karena itu tidak dapat dirujuk sebagai gaya induk. Tidak ada cara mudah untuk mengubah garis biru kecil itu! Jadi, Anda perlu membuat dialog khusus.Jika itu bukan secangkir teh Anda ... jangan menyerah! Saya sangat terganggu karena tidak ada cara mudah untuk melakukan ini, jadi saya menyiapkan proyek kecil di github untuk membuat dialog gaya holo yang dapat disesuaikan dengan cepat (dengan asumsi bahwa telepon mendukung gaya Holo). Anda dapat menemukan proyeknya di sini: https://github.com/danoz73/QustomDialog
Ini harus dengan mudah memungkinkan perubahan dari biru membosankan menjadi oranye menarik!
Proyek ini pada dasarnya adalah contoh penggunaan pembuat dialog khusus, dan dalam contoh saya membuat tampilan khusus yang sepertinya memenuhi contoh Alamat IP yang Anda berikan dalam pertanyaan asli Anda.
Dengan
QustomDialog
, untuk membuat dialog dasar (judul, pesan) dengan warna berbeda yang diinginkan untuk judul atau pembatas, Anda menggunakan kode berikut:Dan untuk menambahkan tata letak khusus (katakanlah, untuk menambahkan alamat IP kecil
EditText
), Anda menambahkanke pembuat dengan tata letak yang telah Anda rancang (contoh IP dapat ditemukan di github). Saya harap ini membantu. Terima kasih banyak kepada Joseph Earl dan jawabannya di sini .
sumber
setItems
dalam dialog kustom ini. Ketika saya menambahkan daftar itu sebenarnya menggeser judul di bawah daftar. Bagaimana mengatasi masalah ini.Warna pembatas:
Ini sedikit diretas, tetapi berfungsi dengan baik untuk saya dan berfungsi tanpa pustaka eksternal (setidaknya di Android 4.4).
Anda dapat menemukan lebih banyak id dialog di file alert_dialog.xml . Misalnya.
android:id/alertTitle
untuk mengubah warna judul ...UPDATE: Warna judul
Retas untuk mengubah warna judul:
sumber
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
sini.DialogFragment
mana warna judul belum teridentifikasiandroid:id/alertTitle
tetapi saya tidak menemukan yang benar.NullPointerException
disetTextColor()
periksa ini berguna untuk Anda ...
Anda mendapatkan detail dari tautan berikut.
http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setCustomTitle%28android.view.View%29
CustomDialog.java
title.xml
sumber
Ini akan mengatur warna untuk judul, ikon, dan pembatas. Terikat untuk berubah dengan versi Android baru.
Ingatlah untuk memanggil dialog.show () sebelum memanggil metode ini.
sumber
Dengan mengikuti kode sumber Dialog , saya menemukan bahwa Judul dihasilkan di Kelas
MidWindow
dengan menggembungkandialog_title_holo.xml
tata letak. jadi Id darimTitleView
adalahtitle
dan Id pembagi adalahtitleDivider
.kita dapat mengakses Id
title
hanya denganandroid.R.id.title
.dan akses ke Id
titleDivider
olehResources.getSystem().getIdentifier("titleDivider","id", "android");
Kode terakhir yang saya gunakan untuk mengubah Arah judul dan mengubah warna adalah:
sumber
Jika Anda tidak menginginkan "perpustakaan" untuk itu, Anda dapat menggunakan peretasan yang buruk ini:
Ini telah diuji dan bekerja pada 4.x; tidak diuji di bawah, tetapi jika memori saya bagus, seharusnya berfungsi untuk 2.x dan 3.x
sumber
Di kelas onCreateView, saya meletakkan ini:
colorPrimary menautkan ke file colors.xml kami yang menyimpan semua warna. Juga
d.setTitle
menyediakan cara hacky untuk mengatur warna judul.sumber
Jika Anda membuat Layout kustom untuk dialog peringatan
maka Anda dapat menambahkan seperti ini dengan mudah untuk mengubah warna
sumber
Jika Anda menggunakan tata letak judul khusus maka Anda dapat menggunakannya seperti
alertDialog.setCustomTitle(customTitle);
Contoh
Pada dialog penggunaan thread UI seperti:
customtitlebar.xml
sumber
Berikut adalah solusi lain (berdasarkan jawaban yang disarankan) yang menangani gaya dialog di satu kelas tanpa perlu mengkhawatirkan status dialog saat Anda mengubah gaya - dialog sudah dapat ditampilkan atau baru saja diinisialisasi.
Contoh penggunaan:
Penerapan:
sumber
Melanjutkan dari jawaban ini: https://stackoverflow.com/a/15285514/1865860 , saya membagi repo github yang bagus dari @ daniel-smith dan membuat beberapa perbaikan:
setItems
metodeitems_list
setItems
metodelistItem
sentuh umpan baliktautan: https://github.com/dentex/QustomDialog
sumber
Daripada menggunakan pembagi dalam dialog, gunakan tampilan dalam tata letak khusus dan setel tata letak sebagai tata letak khusus dalam dialog.
custom_popup.xml:
activity.java:
sumber
sumber
Jika Anda menggunakan memperluas dialog, gunakan:
sumber