Wie zeige ich die Snackbar, wenn die Aktivität beginnt?

Lesezeit: 4 Minuten

Benutzer-Avatar
Sudhish Mohan

Ich möchte Android zeigen Snackbar (android.support.design.widget.Snackbar) wenn die Aktivität beginnt, wie wir a zeigen Toast.

Das Problem ist jedoch, dass wir beim Erstellen das übergeordnete Layout angeben müssen Snackbar so was:

Snackbar.make(parentlayout, "This is main activity", Snackbar.LENGTH_LONG)
            .setAction("CLOSE", new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                }
            })
            .setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
            .show();

Wie man Elternlayout gibt, wenn wir zeigen Snackbar zu Beginn der Aktivität ohne Klickereignisse (Wenn es ein Klickereignis gewesen wäre, hätten wir die übergeordnete Ansicht problemlos passieren können)?

Benutzer-Avatar
David Corsalini

Zeigen Sie einfach auf irgendeinen View innerhalb der Activity's XML. Sie können beispielsweise der Root-Ansichtsgruppe eine ID zuweisen und Folgendes verwenden:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);    
   setContentView(R.layout.main_activity);
   View parentLayout = findViewById(android.R.id.content);
   Snackbar.make(parentLayout, "This is main activity", Snackbar.LENGTH_LONG) 
        .setAction("CLOSE", new View.OnClickListener() {
            @Override 
            public void onClick(View view) {

            } 
        }) 
        .setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
        .show(); 
   //Other stuff in OnCreate();
}

  • Für die Root-Ansicht können Sie auch generell verwenden findViewById(android.R.id.content) wie hier angegeben stackoverflow.com/a/4488149/1518546

    – John Cummings

    30. Oktober 2015 um 15:03 Uhr


  • ParentLayout anzeigen = findViewById(R.id.root_view); löst eine Nullzeiger-Ausnahme in Version 5.0 oder niedriger aus. Wie kann man dieses Problem lösen?

    – Anand Savjani

    31. Dezember 2015 um 4:43 Uhr

  • @AnandSavjani Der Code funktioniert perfekt mit mir für 5.0 und unter 5.0, es muss einen Fehler in Ihrem Layout geben (root_view). Wenn Sie ein Fragment verwenden, sollten Sie rootview.findViewById(R.id.your_parent_view) schreiben; Geben Sie auch nicht dieselbe ID wie den Layoutnamen an.

    – Sudhish Mohan

    11. Januar 2016 um 10:07 Uhr

  • Ich glaube, es löst NullpointerException aus, wenn Sie CoordinatorLayout nicht als Root verwenden.

    – Ishaan

    7. September 2016 um 15:48 Uhr

  • Vergessen Sie nicht, die Support-Designbibliothek einzuschließen: ‘com.android.support:design:27.0.0’

    – Nicola

    26. November 2017 um 11:11 Uhr

Benutzer-Avatar
devDeejay

Ich hatte bisher Probleme damit, Snackbar anzuzeigen. Hier ist die einfachste Art, eine Snackbar anzuzeigen. Um es als Beginn Ihrer Hauptaktivität anzuzeigen, fügen Sie einfach diese beiden Zeilen in Ihre ein OnCreate()

    Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "Welcome To Main Activity", Snackbar.LENGTH_LONG);
    snackbar.show();

PS Stellen Sie einfach sicher, dass Sie den Android Design Support importiert haben (wie in der Frage erwähnt).

Für Kotlin,

Snackbar.make(findViewById(android.R.id.content), message, Snackbar.LENGTH_SHORT).show()

Versuche dies

Snackbar.make(findViewById(android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
                        .setAction("Submit", mOnClickListener)
                        .setActionTextColor(Color.RED)
                        .show();

Rufen Sie diese Methode in onCreate auf

Snackbar snack = Snackbar.make(
                    (((Activity) context).findViewById(android.R.id.content)),
                    message + "", Snackbar.LENGTH_SHORT);
snack.setDuration(Snackbar.LENGTH_INDEFINITE);//change Duration as you need
            //snack.setAction(actionButton, new View.OnClickListener());//add your own listener
            View view = snack.getView();
            TextView tv = (TextView) view
                    .findViewById(android.support.design.R.id.snackbar_text);
            tv.setTextColor(Color.WHITE);//change textColor

            TextView tvAction = (TextView) view
                    .findViewById(android.support.design.R.id.snackbar_action);
            tvAction.setTextSize(16);
            tvAction.setTextColor(Color.WHITE);

            snack.show();

Eine Hilfsfunktion für die Show-Snackbar

fun showSnackBar(activity: Activity, message: String, action: String? = null,
    actionListener: View.OnClickListener? = null, duration: Int = Snackbar.LENGTH_SHORT) {
    val snackBar = Snackbar.make(activity.findViewById(android.R.id.content), message, duration)
        .setBackgroundColor(Color.parseColor("#CC000000")) // todo update your color
        .setTextColor(Color.WHITE)
    if (action != null && actionListener!=null) {
        snackBar.setAction(action, actionListener)
    }
    snackBar.show()
}

Beispiel für die Verwendung in Activity

  showSnackBar(this, "No internet")
  showSnackBar(this, "No internet", duration = Snackbar.LENGTH_LONG)
  showSnackBar(activity, "No internet", "OK", View.OnClickListener { 
       // handle click 
  })

Beispiel für die Verwendung in Fragment

  showSnackBar(getActivity(), "No internet")

Hoffe es hilft

Dies kann einfach durch die Verwendung der folgenden Codes in onCreate erfolgen. Durch die Verwendung des Standardlayouts von Android

Snackbar.make(findViewById(android.R.id.content),"Your Message",Snackbar.LENGTH_LONG).show();

Einfache Möglichkeit, Text anzuzeigen:

Snackbar.make(view, "<text>", Snackbar.LENGTH_SHORT).show();
// or
Snackbar.make(view, "<text>", Snackbar.LENGTH_LONG).show();

und um Text mit einer Schaltfläche anzuzeigen:

Snackbar.make(view, "<text>", Snackbar.LENGTH_SHORT).setAction("<button_text>", new View.OnClickListener() {
            @Override 
            public void onClick(View view) {
                    // operation to perform when the button is clicked
            } 
        }).show();

1334240cookie-checkWie zeige ich die Snackbar, wenn die Aktivität beginnt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy