Как мы можем настроить шрифты диалогового окна предупреждения, используя стили? - PullRequest
0 голосов
/ 10 октября 2018

Как мы можем настроить шрифты диалогового окна оповещения Android, используя стили

Я нашел много решений, используя метод setTypeFace().Но я хочу настроить весь диалог предупреждений приложения, используя стили.

Я хотел бы изменить заголовок, сообщение, шрифты кнопок.

Мне удалось изменить шрифт сообщения, используяследующие коды.

Объявление моего стиля для диалогового окна предупреждения

<style name="MyAlertDialougeTheme" parent="@android:style/Theme.Material.Light.Dialog.Alert">
    <item name="android:textAppearanceSmall">@style/MyTextAppearance</item>
    <item name="android:textAppearanceLarge">@style/MyTextAppearance</item>
    <item name="android:textAppearanceMedium">@style/MyTextAppearance</item>

</style>

Java-код для отображения диалогового окна предупреждения

 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this,
                R.style.MyAlertDialougeTheme);
        builder.setTitle("Warning")
                .setMessage("My message here")
                .setPositiveButton("yes", null)
                .setNegativeButton("no", null)
                .show();

Обзор ниже экрана

enter image description here

Пожалуйста, помогите мне изменить заголовок и шрифты кнопок, используя стили, а также я хотел бы, чтобынастроить цвет шрифта для кнопок «минус» и «позитив».

Спасибо за ваше время и помощь !!

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Java-код для отображения кода диалога с предупреждением замените этот код

final Dialog dialog = new Dialog(activity);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setCancelable(false);
            dialog.setContentView(R.layout.lay_alertdialog);  


     Objects.requireNonNull(dialog.getWindow()).setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);


// view initialize

//sample 
    Button dialogButton = dialog.findViewById(R.id.btn_ok);
    dialogButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            dialog.dismiss();


        }
    });
//


    dialog.show();

макет сохранить lay_alertdialog

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="24dp"
    android:gravity="center"
    android:orientation="vertical">


    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:gravity="start"
        android:padding="4dp"
        android:text="Warning"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:gravity="start"
        android:padding="4dp"
        android:text="your message"
        android:textSize="16sp"
        android:textStyle="bold" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:layout_margin="8dp"
            android:text="NO"
            android:textColor="#911907"
            android:textSize="18sp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:layout_margin="8dp"
            android:text="YES"
            android:textColor="#00a851
            android:textSize="18sp" />
    </LinearLayout>

</LinearLayout>
0 голосов
/ 10 октября 2018

Это то, что вы ищете: https://stackoverflow.com/a/10741161/10126669

Все, что вам нужно сделать, это поместить свой шрифт в активы и изменить

SpannableStringBuilder SS = new SpannableStringBuilder("My message here");
SS.setSpan (new CustomTypefaceSpan("", font2), 0, 4,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

в соответствии с размером вашегоSpannableStringBuilder

SS.setSpan (new CustomTypefaceSpan("", font2), 0, SS.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

, а затем добавьте SpannableStringBuilder в диалоговое окно как

.setMessage(SS)
0 голосов
/ 10 октября 2018

Прежде всего создайте класс CustomDialog, который расширит класс Dialog Android.Ниже приведен код для того же самого -

public class CustomDialog extends Dialog implements
        View.OnClickListener {

    Activity context;
    private Button mBtnOK;

    public CustomDialog(Activity context) {
        super(context);
        this.context = context;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.custom_popup_dialog_box);
        mBtnOK = findViewById(R.id.btn_ok);
        mBtnOK.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_ok:
                dismiss();
                break;
            default:
                break;
        }
        dismiss();
    }
}

Теперь здесь, когда вам нужен экземпляр диалогового окна, вам просто нужно создать экземпляр вашего класса CustomDialog и XML здесь custom_popup_dialog_box будет иметь все настройки, такие как семейство шрифтов, размер текста, цвет и т. д. Вам просто нужно установить свойство внутри XML или программно.Надеюсь, вы найдете решение.Дайте мне знать в случае дополнительной информации.Благодарю.

...