У меня есть специальное растровое изображение, сгенерированное для этого фона, теперь мне нужно установить его для 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();
}