Изменение цвета текста диалогового окна предупреждения
У меня есть всплывающее окно для загрузки аудио инструкции в моем приложении. Я пытаюсь изменить цвет текста по умолчанию "OK" на синий. Я что-то пробовал, но не работал. Вот мой код:
private void showDownloadPgmPopup() {
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(getActivity());
builder.setTitle("Download instructional audio?");
builder.setMessage(ParamConstants.AUDIODOWNLOADPERMISSION);
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
WwDatabaseHelper.storeSelectedWeekAndDay(getActivity(), mSelectedWeekDataModel);
goToMoveScreen();
}
});
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
AndroidDownloadFileByProgressBarActivity.StartAudioAssetDownload(getActivity());
}
}).create();
// change the text color of download instruction ok button
final android.app.AlertDialog dialog = builder.show();
dialog.setOnShowListener( new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface arg0) {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.parseColor("#ff5722"));
}
});
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
Но изменение не отражает, может ли кто-нибудь сказать мне, что я делаю неправильно?
Ответы
Ответ 1
В конструкторе AlertDialog вы должны указать пользовательский идентификатор стиля:
AlertDialog.Builder(Context context, int themeResId)
и файл стиля должен выглядеть примерно так:
<style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:colorAccent">#0000FF</item>
</style>
Ответ 2
Измените свой метод на
private void showDownloadPgmPopup() {
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(getActivity(),R.style.AlertDialog);
...
..
.
}
А в res/values /styles.xml добавьте новый стиль AlertDialog
<style name="AlertDialog" parent="Base.Theme.AppCompat.Light.Dialog">
<item name="android:textColor">#000000</item>
<item name="android:textColorPrimary">#595959</item>
<item name="android:colorAccent">#1b5e20</item>
</style>
Ниже приведен скриншот этих изменений
![See dialog box color changes]()
Ответ 3
Попробуйте вызвать setTextColor
после show
. Обратитесь ниже:
show()
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.YELLOW)
Ответ 4
У вас есть два способа сделать это
- Отменить диалог по умолчанию.
//1. create a dialog object 'dialog'
MyCustomDialog builder = new MyCustomDialog(getActivity(), "Exit", errorMessage);
AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
...
}
}).create();
//2. now setup to change color of the button
dialog.setOnShowListener( new OnShowListener() {
@Override
public void onShow(DialogInterface arg0) {
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.parseColor("#f34235"));
}
}
dialog.show()
- Создайте свой собственный диалог
custom
// create instance of dialog
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
// get inflater and inflate layour for dialogue
LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.alert_label_editor, null);
// now set layout to dialog
dialogBuilder.setView(dialogView);
// create instance like this OR directly mentioned in layout
Button button= (Button) dialogView.findViewById(R.id.label_field);
button.setText("test label");
AlertDialog alertDialog = dialogBuilder.create();
// show dialog
alertDialog.show();
Ответ 5
Alert Dialog полная настройка здесь.
Пример:
![введите описание изображения здесь]()
Ответ 6
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.YELLOW)
Приведенный выше код не работает для меня, но приведенный ниже работает:
dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(getResources().getColor(R.color.Yellow));
Ответ 7
Просто измените текст "ОК" с помощью этого кода:
Html.fromHtml("<font color='#0000FF'>OK</font>")
Этот код полностью изменит ваш цвет текста в зависимости от добавленного вами значения цвета, пока # 0000FF синий.
Ответ 8
Мне удалось изменить цвет текста на красный с помощью SpannableString вместо обычной строки.
Пример -
var okString = new SpannableString("OK");
okString.SetSpan(new ForegroundColorSpan(Color.Red), 0, Strings.Report.Length, 0);
Затем я передал переменную okString в setItems().
Попробуйте передать spannableString в setPositiveButton().