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)?
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();
}
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).
Essaye ça
Snackbar.make(findViewById(Android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
.setAction("Submit", mOnClickListener)
.setActionTextColor(Color.RED)
.show();
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();
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
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
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();