Как сделать невидимым фон фрагмента диалога? - PullRequest
2 голосов
/ 01 августа 2020

Я использовал метод youtuber Coding in Flow для создания настраиваемого диалогового окна. Я весь день пытался сделать фон диалога прозрачным. Я использовал все методы, которые нашел в Интернете. Не работает.

Вот как это происходит:

  • Сначала макет диалогового окна layout_dialog. xml:

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="50dp"
            android:background="@drawable/dialog_background">
    
            <!-- The contents of the Dialog go here -->
    
        </RelativeLayout>
    
        <ImageView
            android:id="@+id/iconImageView2"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="0dp"
            android:background="?attr/actionBarItemBackground"
            android:scaleType="fitCenter"
            app:srcCompat="@android:mipmap/sym_def_app_icon" />
    
    </RelativeLayout>
    
  • Вот класс Dialog:

     public class DialogBrightness extends AppCompatDialogFragment {
    
         //declare whatever variables here
    
         @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
    
             AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    
             LayoutInflater inflater = getActivity().getLayoutInflater();
             View view = inflater.inflate(R.layout.layout_dialog, null);
    
             builder.setView(view)
                     .setTitle("Login")
                     .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                         @Override
                         public void onClick(DialogInterface dialogInterface, int i) {
                         }
                     })
                     .setPositiveButton("ok", new DialogInterface.OnClickListener() {
                         @Override
                         public void onClick(DialogInterface dialogInterface, int i) {
                             //get whatever values
                             listener.apply(//values);
                         }
                     });
    
             //findViewById for your dialog contents here
    
             return builder.create();
         }
    
         public interface DialogBrightnessListener {
             void apply(//values);
         }
     }
    
  • А вот диалог, вызываемый из основного действия:

    DialogBrightness dialogBrightness = new DialogBrightness();
    dialogBrightness.show(getSupportFragmentManager(), "Brightness Dialog");
    

Вот как появляется диалог:

введите описание изображения здесь

Пытаюсь сделать невидимой верхнюю белую часть. Ничего не работает!

Ответы [ 3 ]

2 голосов
/ 02 августа 2020

Вы можете создать макет, как показано ниже. Есть лишний макет, но в случае диалогов поможет

введите описание изображения здесь

1 голос
/ 01 августа 2020

Попробуйте следующее:

поместите приведенный ниже код в onCreateDialog:

    // set the dialog background to transparent
    getDialog().getWindow().setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));

    // remove background dim 
    getDialog().getWindow().setDimAmount(0);
0 голосов
/ 01 августа 2020

Попробуйте следующее:

установите цвет фона родительского макета на:

android:background="@android:color/transparent"

вот так:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent" >

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:background="@drawable/dialog_background">

    <!-- The contents of the Dialog go here -->

</RelativeLayout>

<ImageView
    android:id="@+id/iconImageView2"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="0dp"
    android:background="?attr/actionBarItemBackground"
    android:scaleType="fitCenter"
    app:srcCompat="@android:mipmap/sym_def_app_icon" />

</RelativeLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...