Диалог Custom Alert не закрывается при нажатии кнопки и показывает белый фон под настраиваемым диалогом - PullRequest
0 голосов
/ 09 июля 2019

Я создал настраиваемое диалоговое окно оповещения, которое будет отображаться в моем приложении. Он имеет imageView, два textViews и кнопку. Я пытаюсь показать это диалоговое окно с настраиваемым оповещением, как только запускается мое основное действие. Я вызываю это настраиваемое оповещение dialog.show () отдельным методом в соответствии с моим требованием. Отображается настраиваемое диалоговое окно оповещения, но при нажатии кнопки это не сбрасывается со счетов, также в настраиваемом диалоговом окне предупреждения отображается дополнительный белый фон.

Метод showCustomAlertDialog ()

 public void showCustomAlertDialog() {
 LayoutInflater layoutInflater = LayoutInflater.from(this);
 final View promptView  =layoutInflater.inflate(R.layout.reminder_alert_dialog, null);
 final AlertDialog builder = new AlertDialog.Builder(this).create();

 Button recordButton = (Button)promptView.findViewById(R.id.record_button);
 recordButton.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
        System.out.println("Dismiss the dialog");
        builder.dismiss();
     }
  });
  builder.setView(promptView);
  builder.show();
 }

layoutder_alert_dialog

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout   xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<ImageView
    android:id="@+id/image_view"
    android:layout_width="wrap_content"
    android:layout_height="500dp"
    android:background="@drawable/ic_alert" />

<TextView
    android:id="@+id/greetings_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="GOOD MORNING, KEVIN"
    android:textColor="#000000"
    android:textSize="20sp"
    android:textStyle="bold"
    android:layout_marginTop="200dp"
    android:layout_centerHorizontal="true"/>

<TextView
    android:id="@+id/medicines_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Have you taken your medicines today?"
    android:textColor="#000000"
    android:textSize="15sp"
    android:textStyle="normal"
    android:layout_below="@id/greetings_text"
    android:layout_marginTop="50dp"
    android:layout_centerHorizontal="true"/>

<Button
    android:id="@+id/record_button"
    android:layout_width="160dp"
    android:layout_height="40dp"
    android:background="#3BC4B8"
    android:text="Record"
    android:textSize="20sp"
    android:textColor="#ffffff"
    android:layout_below="@id/medicines_text"
    android:layout_marginTop="60dp"
    android:layout_centerHorizontal="true"/>

</RelativeLayout>

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Попробуй вот так ...

//class variables
 AlertDialog dialog;
 Button dismiss;
//Add your other views if required

//in onCreate() activity method
makeDialog();

//makeDialog() method code

void makeDialog(){
      AlertDialog.Builder builder = new AlertDialog.Builder(this);
      builder.setTitle("Title");
      View root = getLayoutInflater().inflate(R.layout.your_layout,null);
      dismiss = root.findViewById(R.id.your_button_id);
      //another views initialization goes here...
      dismiss.setOnClickListener(new View.OnClickListener(){
                       dialog.dismiss();
                       //your logic or job...
      });
      builder.setView(root);
      dialog = builder.create();
}

наконец, покажите диалог, когда захотите

dialog.show();
0 голосов
/ 10 июля 2019

Для получения дополнительного белого фона необходимо применить цвет фона окна к прозрачному для AlertDialog с этим кодом

Dialog alertDialog = new Dialog(this);
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
alertDialog.setContentView(R.layout.tabs);
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.show();

А проблема, когда диалог не отображается, называется System.out.println()? Я бы также порекомендовал вам установить представление для AlertDialog.Builder, прежде чем настраивать слушателей как,

final AlertDialog builder = new AlertDialog.Builder(this).create();

  builder.setView(promptView);

 Button recordButton = (Button)promptView.findViewById(R.id.record_button);
 recordButton.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
        System.out.println("Dismiss the dialog");
        builder.dismiss();
     }
  });
...