Saya memiliki banyak dialog peringatan di aplikasi saya. Ini adalah tata letak default tetapi saya menambahkan tombol positif dan negatif ke dialog. Jadi tombol mendapatkan warna teks default Android 5 (hijau). Saya mencoba mengubahnya tanpa hasil. Adakah cara untuk mengubah warna teks itu?
Dialog Kustom saya:
public class MyCustomDialog extends AlertDialog.Builder {
public MyCustomDialog(Context context,String title,String message) {
super(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false);
TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title);
titleTextView.setText(title);
TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message);
messageTextView.setText(message);
this.setCancelable(false);
this.setView(viewDialog);
} }
Membuat dialog:
MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage);
builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
...
}
}).show();
Tombol negatif itu adalah tombol dialog default dan mengambil warna hijau default dari Android 5 Lollipop.
Terimakasih banyak
Jawaban:
Anda dapat mencoba membuat
AlertDialog
objek terlebih dahulu, lalu menggunakannya untuk mengatur untuk mengubah warna tombol dan kemudian menunjukkannya. (Perhatikan bahwa padabuilder
objek alih-alih memanggil,show()
kami memanggilcreate()
untuk mendapatkanAlertDialog
objek:Alasan Anda harus melakukannya
onShow()
dan tidak bisa hanya mendapatkan tombol itu setelah Anda membuat dialog adalah bahwa tombol belum akan dibuat.Saya mengubah
AlertDialog.BUTTON_POSITIVE
untukAlertDialog.BUTTON_NEGATIVE
mencerminkan perubahan dalam pertanyaan Anda. Meskipun aneh bahwa tombol "OK" akan menjadi tombol negatif. Biasanya itu adalah tombol positif.sumber
Berikut cara alami untuk melakukannya dengan gaya:
Jika Anda
AppTheme
diwarisi dariTheme.MaterialComponents
, maka:Jika Anda
AppTheme
diwarisi dariTheme.AppCompat
:Gunakan
AlertDialogTheme
di AndaAppTheme
atau dalam konstruktor
sumber
com.google.android.material:material:1.0.0-beta01
dan saya menggunakan Theme.MaterialComponents.Light.Dialog.AlertWarna tombol dan teks lainnya juga dapat diubah melalui tema:
Hasil:
sumber
android:
bagian dariandroid:alertDialogTheme
dan dariandroid:colorAccent
.Solusi paling sederhana adalah:
sumber
AlertDialog.BUTTON_NEGATIVE
dll.Ada dua cara untuk mengubah warna tombol dialog.
Cara Dasar
Jika Anda hanya ingin mengubah suatu kegiatan, tulislah dua baris di bawah ini setelahnya
alertDialog.show();
Direkomendasikan
Saya akan merekomendasikan menambahkan tema untuk
AlertDialog
distyles.xml
sehingga Anda tidak harus menulis kode yang sama lagi dan lagi di setiap kegiatan / call dialog. Anda bisa membuat gaya dan menerapkan tema itu di kotak dialog. Jadi, setiap kali Anda ingin mengubah warna kotak AlertDialog, ubah saja warna dalam styles.xml dan semua kotak dialog akan diperbarui di seluruh aplikasi.Dan terapkan tema dalam
AlertDialog.Builder
sumber
Jika Anda ingin mengubah warna teks tombol (positif, negatif, netral) tambahkan saja gaya dialog khusus Anda:
Jadi, gaya dialog Anda harus terlihat seperti ini:
sumber
Warna tombol dan teks lainnya juga dapat diubah menggunakan appcompat:
sumber
Dalam tema / gaya aplikasi Anda, tambahkan baris berikut:
Kemudian tambahkan gaya berikut:
Menggunakan metode ini membuatnya tidak perlu untuk mengatur tema di pembangun AlertDialog.
sumber
Sama seperti catatan tambahan:
Warna tombol (dan seluruh gaya) juga tergantung pada tema saat ini yang bisa agak berbeda saat Anda menggunakan keduanya
atau
(Lebih baik menggunakan yang kedua)
sumber
Inilah cara Anda melakukannya: Cara sederhana
sumber
bagi saya itu berbeda, saya menggunakan tema tombol
dan karena
putih di sana ... saya tidak melihat teks tombol (tombol Dialog pada dasarnya juga tombol). di sana kita pergi, mengubahnya, memperbaikinya.
sumber