it-swarm.com.de

Wie zeigt man Snackbar an, wenn die Aktivität beginnt?

Ich möchte Android Snackbar(Android.support.design.widget.Snackbar) anzeigen, wenn die Aktivität beginnt, genauso wie wir eine Toast anzeigen. 

Das Problem ist jedoch, dass wir das übergeordnete Layout angeben müssen, wenn Sie Snackbar wie folgt erstellen:

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 kann ich das übergeordnete Layout angeben, wenn Snackbar zu Beginn der Aktivität ohne Klickereignisse angezeigt wird?

70
Sudheesh Mohan

Zeigen Sie einfach auf eine beliebige View in der Activity's-XML. Sie können z. B. 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();
}
151
David Corsalini

Ich hatte bisher Probleme mit der Anzeige der Snackbar ... Hier ist der einfachste Weg, eine Snackbar anzuzeigen. Um es als Start der Hauptaktivität anzuzeigen, fügen Sie diese beiden Zeilen einfach in Ihre OnCreate() ein 

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

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

12
devDeejay

Versuche dies

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

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();
2
Xar E Ahmer

Eine Utensilienfunktion für 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 mit in Activity

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

Beispiel mit Fragment

  showSnackBar(getActivity(), "No internet")

Ich hoffe es hilft

1
Linh

Sie können diese Bibliothek ausprobieren. Dies ist ein Wrapper für Android-Standard-Snackbar. https://github.com/ChathuraHettiarachchi/CSnackBar

Snackbar.with(this,null)
    .type(Type.SUCCESS)
    .message("Profile updated successfully!")
    .duration(Duration.SHORT)
    .show();

Diese enthält mehrere Arten von Snackbars und sogar eine benutzerdefinierte Snackbar

1

Dies kann einfach durch Verwendung der folgenden Codes in onCreate erfolgen. Indem Sie das Standardlayout von Android verwenden

Snackbar.make(findViewById(Android.R.id.content),"Your Message",Snackbar.LENGTH_LONG).show();
0
Jarin Rocks