2015-09-08 14 views
6

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.

+0

tecnicamente parlando, dovrebbe essere un problema. La vera domanda è perché uno dovrebbe aver bisogno di quello – Blackbelt

+0

? 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. –

+0

non dimenticare di accettare una delle risposte! :) –

risposta

9

È 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

picture showing result

Nota: Non c'è alcuna necessità di utilizzare un CoordinatorLayout come la radice. Nel mio esempio ho semplicemente usato un LinearLayout come root.

+0

Swiping SnackBar potrebbe non essere possibile quando non si utilizza CoordinatorLayout. –

4

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.

0

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(); 
    } 
Problemi correlati