В Android измените оформление фона просмотра AlertDialog с черного на прозрачный - PullRequest
0 голосов
/ 08 марта 2019

Мне нужно показать AlertDialog, и я должен ждать ввода пользователя, чтобы продолжить с кодом. Все работает, но все, что за пределами alertDialog, черное. Я хочу, чтобы активность в фоновом режиме была видна. Когда я не использую обработчик, экран вокруг AlertDialog прозрачен, но программа продолжается, не дожидаясь ввода пользователя. Это мой код:

AlertDialog alertDialog;

// Handler for blocking until user input is received    
final Handler handler = new Handler() {
    @Override
    public void handleMessage(Message mesg) {
        throw new RuntimeException();
    }
};

// Create a alert dialog builder.
AlertDialog.Builder builder = new AlertDialog.Builder(this);

// Get custom form view.
View formView = getLayoutInflater().inflate(R.layout.activity_form, null);

// Set above view in alert dialog.
builder.setView(formView);

// doneButton click listener.
MaterialButton doneButton = (MaterialButton) formView.findViewById(R.id.done_button);
doneButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    try {
        // Close Alert Dialog.
        handler.sendMessage(handler.obtainMessage());
        alertDialog.cancel();
    } catch(Exception ex) {
       ex.printStackTrace();
    }
}
});
alertDialog = builder.create();
alertDialog.show();

try {
    Looper.loop();
} catch (RuntimeException e) {
    e.printStackTrace();
}

Что я пробовал до сих пор:
- Использование Dialog вместо AlertDialog и затем getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

  • Определение стиля:
    <style name="AlertDialogTheme" parent="Theme.MaterialComponents.Light.Dialog.Alert"> <item name="android:background">@color/transparent</item> </style>
    а затем использовать его так:
    AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.);
...