2015-09-08 10 views
6

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.

+0

technisch gesehen, sollte es ein Problem sein. Die eigentliche Frage ist, warum sollte man das brauchen – Blackbelt

+0

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

+0

Vergessen Sie nicht, eine der Antworten zu akzeptieren! :) –

Antwort

9

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

picture showing result

Hinweis: Es gibt keine Notwendigkeit, eine CoordinatorLayout als Wurzel zu verwenden. In meinem Beispiel habe ich einfach ein LinearLayout als Wurzel verwendet.

+0

Swiping SnackBar ist möglicherweise nicht möglich, wenn Sie CoordinatorLayout nicht verwenden. –

4

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 SnackbarSnackbar.make((dialogView, "text", duration)) aufrufen zu zeigen, wo dialogView Ihre benutzerdefinierte Ansicht ist.

0

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(); 
    } 
Verwandte Themen