Ich entwickle eine Android-Anwendung. In diesem möchte ich Materialdesign Snackbar im Dialog anzeigen. Ist es möglich? Wenn ja, wie?Kann ich Materialdesign Snackbar im Dialog anzeigen?
Bitte helfen Sie mir.
Danke.
Ich entwickle eine Android-Anwendung. In diesem möchte ich Materialdesign Snackbar im Dialog anzeigen. Ist es möglich? Wenn ja, wie?Kann ich Materialdesign Snackbar im Dialog anzeigen?
Bitte helfen Sie mir.
Danke.
Es ist definitiv möglich, Sie müssen nur die Ansicht des Dialogs an die SnackBar
übergeben.
Beispiel
AlertDialog.Builder mAlertDialogBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
// inflate the custom dialog view
final View mDialogView = inflater.inflate(R.layout.dialog_layout, null);
// set the View for the AlertDialog
mAlertDialogBuilder.setView(mDialogView);
Button btn = (Button) mDialogView.findViewById(R.id.dialog_btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Pass the mDialogView to the SnackBar
Snackbar
.make(mDialogView, "SnackBar in Dialog", Snackbar.LENGTH_LONG)
.show();
}
});
AlertDialog alertDialog = mAlertDialogBuilder.create();
alertDialog.show();
Ergebnis
Hinweis: Es gibt keine Notwendigkeit, eine CoordinatorLayout
als Wurzel zu verwenden. In meinem Beispiel habe ich einfach ein LinearLayout als Wurzel verwendet.
Swiping SnackBar ist möglicherweise nicht möglich, wenn Sie CoordinatorLayout nicht verwenden. –
Ja, Sie können.
Um Snackbar
in Ihrem Dialog
zu zeigen, erstellen Sie benutzerdefinierte View
dafür. Hier können Sie mehr darüber lesen: Dialogs/Creating a Custom Layout
Dann Snackbar
Snackbar.make((dialogView, "text", duration))
aufrufen zu zeigen, wo dialogView
Ihre benutzerdefinierte Ansicht ist.
Wenn Sie eine Dialog
verwenden dann:
dialog_share = new Dialog(MainScreen.this, R.style.DialogTheme);
dialog_share.requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater inflater = this.getLayoutInflater();
mDialogView = inflater.inflate(R.layout.dialog_share, null);
dialog_share.setContentView(mDialogView);
dialog_share.getWindow().setBackgroundDrawableResource(R.color.translucent_black);
dialog_share.show();
public void ShowSnackBarNoInternetOverDialog() {
Snackbar snackbar = Snackbar.make(mDialogView, getString(R.string.checkinternet), Snackbar.LENGTH_LONG);
snackbar.setActionTextColor(Color.CYAN);
snackbar.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(MainScreen.this, "snackbar OK clicked", Toast.LENGTH_LONG).show();
}
});
snackbar.show();
}
technisch gesehen, sollte es ein Problem sein. Die eigentliche Frage ist, warum sollte man das brauchen – Blackbelt
Ich glaube nicht, dass Sie Snackbar im Dialog verwenden können, weil es immer am unteren Rand des Bildschirms angezeigt wird. Außerdem sollten Sie Snackbar nicht im Dialog verwenden, muss ich sagen, weil es nicht der richtige Weg ist, davon zu verwenden. –
Vergessen Sie nicht, eine der Antworten zu akzeptieren! :) –