Sto sviluppando un'applicazione Android. In questo voglio mostrare il design del materiale Snackbar nel dialogo. È possibile? Se sì allora come?Posso visualizzare il disegno del materiale Snackbar nel dialogo?
Per favore aiutatemi.
Grazie.
Sto sviluppando un'applicazione Android. In questo voglio mostrare il design del materiale Snackbar nel dialogo. È possibile? Se sì allora come?Posso visualizzare il disegno del materiale Snackbar nel dialogo?
Per favore aiutatemi.
Grazie.
È sicuramente possibile, è sufficiente passare la visualizzazione della finestra di dialogo a SnackBar
.
Esempio
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();
Risultato
Nota: Non c'è alcuna necessità di utilizzare un CoordinatorLayout
come la radice. Nel mio esempio ho semplicemente usato un LinearLayout come root.
Swiping SnackBar potrebbe non essere possibile quando non si utilizza CoordinatorLayout. –
Sì, è possibile.
Per mostrare Snackbar
all'interno del Dialog
creare personalizzato View
per esso. Si può leggere di più su di esso qui: Dialogs/Creating a Custom Layout
Poi per mostrare Snackbar
invocano Snackbar.make((dialogView, "text", duration))
dove dialogView
è la visualizzazione personalizzata.
Se stai usando un Dialog
poi:
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();
}
tecnicamente parlando, dovrebbe essere un problema. La vera domanda è perché uno dovrebbe aver bisogno di quello – Blackbelt
? Non penso che tu possa usare Snackbar in dialogo perché viene sempre visualizzato nella parte inferiore dello schermo. Inoltre, non dovresti usare Snackbar nel dialogo, devo dire perché non è il modo giusto per usarlo. –
non dimenticare di accettare una delle risposte! :) –