Можно ли заменить макет AlertDialog? - PullRequest
0 голосов
/ 08 июня 2018

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

РЕДАКТИРОВАТЬ: Я хочу сделать это, потому что это позволило бы мне использовать setMessage(), setTitle() строителя и т. Д. С пользовательским макетом

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Да, вы можете, вам просто нужно создать .xml и надуть его.Просто так:

final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // Get the layout inflater
        LayoutInflater inflater = this.getLayoutInflater();
        View alertView = inflater.inflate(R.layout.newsletter_dialog, null);

        // Pass null as the parent view because its going in the dialog layout
        builder.setView(alertView);
        final AlertDialog dialog = builder.show();
0 голосов
/ 08 июня 2018

Да, вы можете сделать это, создавая и раздувая свои собственные представления, как это.

создайте файл пользовательского представления, например custom.xml

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

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="5dp" />

<TextView
    android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#FFF" 
    android:layout_toRightOf="@+id/image"/>/>

 <Button
    android:id="@+id/dialogButtonOK"
    android:layout_width="100px"
    android:layout_height="wrap_content"
    android:text=" Ok "
    android:layout_marginTop="5dp"
    android:layout_marginRight="5dp"
    android:layout_below="@+id/image"
    />

  </RelativeLayout>

, а затем в java:

   AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
  // ...Irrelevant code for customizing the buttons and title
  LayoutInflater inflater = this.getLayoutInflater();
   View dialogView = inflater.inflate(R.layout.custom, null);
  dialogBuilder.setView(dialogView);
   TextView text = (TextView) dialog.findViewById(R.id.text);
        text.setText("Android custom dialog example!");
        ImageView image = (ImageView) dialog.findViewById(R.id.image);
        image.setImageResource(R.drawable.ic_launcher);

        Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
        // if button is clicked, close the custom dialog
        dialogButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

 AlertDialog alertDialog = dialogBuilder.create();

  alertDialog.show();
0 голосов
/ 08 июня 2018

можно настроить или полностью изменить Dialog или AlertDialog. Вы можете настроить Dialog следующим образом

private void customDialog() {
        final Dialog dialog = new Dialog(ActivityUserVideoPlay.this, R.style.MaterialDialogSheet);
        dialog.setContentView(R.layout.your_layout_foor_dialog); // your custom view.
        dialog.setCancelable(false);
        dialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

        dialog.show();
    }

И это стили для диалога

 <style name="MaterialDialogSheet" parent="@android:style/Theme.Dialog">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>
    </style>

Используйте анимацию, чтобы открыть или закрыть диалоговое окно по своему усмотрению, в противном случае вы можете удалить его.

Надеюсь, это поможет.

...