web-dev-qa-db-fra.com

Comment afficher la barre au moment du début de l'activité?

Je souhaite afficher Android Snackbar(Android.support.design.widget.Snackbar) lorsque l'activité commence, exactement comme nous affichons une Toast

Mais le problème est que nous devons spécifier la disposition parente lors de la création de Snackbar comme ceci:

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();

Comment donner une mise en page parent lorsque Snackbar est affiché au début de l'activité sans événement de clic (s'il s'agissait d'un événement de clic, nous aurions facilement pu passer la vue parent)?

70
Sudheesh Mohan

Il suffit de pointer n'importe quel View dans le Activity's XML. Vous pouvez par exemple donner un identifiant au groupe racine ViewGroup et utiliser:

@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

J'ai eu du mal à afficher Snackbar jusqu'à présent ... Voici le moyen le plus simple d'afficher une Snackbar. Pour l'afficher au début de votre activité principale, insérez simplement ces deux lignes dans votre OnCreate() 

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

P.S. Assurez-vous simplement que vous avez importé le support de conception Android (comme indiqué dans la question). 

12
devDeejay

Essaye ça

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

appeler cette méthode dans onCreate 

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

Une fonction utils pour le snack bar

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()
}

Exemple d'utilisation dans Activity

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

Exemple d'utilisation dans Fragment

  showSnackBar(getActivity(), "No internet")

J'espère que ça aide

1
Linh

Vous pouvez essayer cette bibliothèque. Ceci est un wrapper pour le snackbar par défaut Android. https://github.com/ChathuraHettiarachchi/CSnackBar

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

Cela contient plusieurs types de snackbar et même un snackbar intégré customview

1
Chathura Jayanath

Cela peut être fait simplement en utilisant les codes suivants dans onCreate. En utilisant la disposition par défaut d'Android

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