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?
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();
}
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).
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 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
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
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();