Schließlich denke ich, ich habe getan, was Sie erwarten. Auch wenn ich noch ein paar Antworten auf diese Frage hinzugefügt habe, füge ich diese Antwort als separate Antwort hinzu, um Ihnen klarer zu sein.

Seine schmutzige UI, ich bereitete es sehr rushy. Können Sie die StackBar
am unteren Rand des Bildschirms sehen. Es wird angezeigt, wenn Sie auf die Schaltfläche OK
der AlertDialog
klicken. Hier ist, wie ich es gemacht habe.
folgenden Code gehört zu custom_dialog_layout.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:src="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:text="Sample Test for Custom Dialog"
android:textSize="20sp"
android:layout_toRightOf="@+id/image"
android:layout_alignBottom="@+id/image" />/>
<Button
android:id="@+id/dialogButtonOK"
android:layout_width="100px"
android:layout_height="wrap_content"
android:text=" Ok "
android:layout_below="@+id/text"
android:layout_centerHorizontal="true" />
folgenden Code gehört zu activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:id="@+id/rootView"
tools:context="com.stackoverflow.answer.androidcustomdialog.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
folgenden Code MainActivity.java
gehört
package com.stackoverflow.answer.androidcustomdialog;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final View rootView=(View)findViewById(R.id.rootView);
AlertDialog.Builder mAlertDialogBuilder = new AlertDialog.Builder(this);
// inflate the custom dialog view
LayoutInflater inflater=getLayoutInflater();
final View mDialogView = inflater.inflate(R.layout.custom_dialog_layout, null);
// set the View for the AlertDialog
mAlertDialogBuilder.setView(mDialogView);
Button btn = (Button) mDialogView.findViewById(R.id.dialogButtonOK);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Pass the RootView to the SnackBar
Snackbar
.make(rootView, "SnackBar in Dialog", Snackbar.LENGTH_LONG)
.show();
}
});
AlertDialog alertDialog = mAlertDialogBuilder.create();
alertDialog.show();
}
}
Fühlen Sie sich frei zu fragen, was Sie brauchen. In diesem Beispiel verwende ich keine Fragmente. Wenn Sie brauchen, kann ich auch damit helfen. und ich kann das Projekt auch senden, wenn Sie brauchen. Geben Sie mir Ihre E-Mail :)
Als Zusammenfassung, Was ich wirklich getan habe, ist, übergeben Sie einfach die RooT Layout-Ansicht an die SnackBar
. Es ist so einfach.
One More Thing ..
Nach der Google Material Design Snackbars & Toasts Usage Referenz
Platzierung
Snackbar über die meisten Elemente erscheinen auf dem Bildschirm, und sie sind gleich in Höhe auf die schwebende Aktionstaste. Sie sind jedoch in Elevation niedriger als Dialoge, untere Blätter und Navigationsschubladen.
So wird die Snackbar immer niedriger in der Höhe angezeigt als Dialoge.
Verwenden Sie benutzerdefinierte Dialog mit benutzerdefinierten Layout die Höhe match_parent hat und versuchen, das Layout des setzen Hintergrund zu transparent, um das gleiche Gefühl zu haben wie der Standarddialog von Android. – Drv
Der Dialog von obigem Bild hat bereits Werte von width und height auf 'match_parent' gesetzt. – roroinpho21
Ich habe meine Antwort bearbeitet, könntest du überprüfen –