Могу ли я динамически изменить фон всего android.support.v7.app.AlertDialog? - PullRequest
0 голосов
/ 07 января 2019

У меня есть специальное растровое изображение, сгенерированное для этого фона, теперь мне нужно установить его для android.support.v7.app.AlertDialog, но я не могу найти способ сделать это динамически.

Я пытался сделать его подклассом, но никакие действия, такие как onWindowFocusChanged, не запускались в отладке - так как я хотел получить доступ к размеру представления и установить для него фон

public class CustomDialog extends AlertDialog {
    protected CustomDialog(@NonNull Context context) {
        super(context);
    }

    protected CustomDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
    }

    protected CustomDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
        super(context, cancelable, cancelListener);
    }

    @Override
    protected void onStart() {
        super.onStart();
        int width = getWindow().getDecorView().getWidth();
        int height = getWindow().getDecorView().getHeight();
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
//It doesn't trigger here
    }

также, вот как я начинаю это:

 public static void showDialog(Context context, String title, String message, final Runnable runnable){
        new CustomDialog.Builder(context)
                .setTitle(title)
                .setMessage(message)
                .setPositiveButton(context.getString(android.R.string.ok), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        if (runnable != null) runnable.run();
                        dialog.dismiss();
                    }
                })
                .setNegativeButton(context.getString(android.R.string.cancel), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                })
                .show();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...