android - studio - ¿Cómo mostrar Snackbar cuando comienza la actividad?
snackbar js (7)
Quiero mostrar Android
Snackbar
(android.support.design.widget.Snackbar)
cuando comienza la actividad tal como mostramos un
Toast
.
Pero el problema es que tenemos que especificar el diseño principal al crear
Snackbar
esta manera:
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();
¿Cómo dar un diseño principal cuando mostramos
Snackbar
al comienzo de la actividad sin ningún evento de clic (si se tratara de un evento de clic podríamos haber pasado fácilmente la vista principal)?
Prueba esto
Snackbar.make(findViewById(android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
.setAction("Submit", mOnClickListener)
.setActionTextColor(Color.RED)
.show();
llama a este método en 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();
He tenido problemas para mostrar Snackbar hasta ahora.
Aquí está la forma más sencilla de mostrar una Snackbar.
Para mostrarlo como su actividad principal comienza, simplemente ponga estas dos líneas dentro de su
OnCreate()
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "Welcome To Main Activity", Snackbar.LENGTH_LONG);
snackbar.show();
PD: solo asegúrate de haber importado el Android Design Support (como se menciona en la pregunta).
Para Kotlin
Snackbar.make(findViewById(android.R.id.content), message, Snackbar.LENGTH_SHORT).show()
Puedes probar esta biblioteca. Este es un contenedor para snackbar predeterminado de Android. https://github.com/ChathuraHettiarachchi/CSnackBar
Snackbar.with(this,null)
.type(Type.SUCCESS)
.message("Profile updated successfully!")
.duration(Duration.SHORT)
.show();
Contiene múltiples tipos de snackbar e incluso un snackbar integrado con vista personalizada
Se puede hacer simplemente usando los siguientes códigos dentro de onCreate. Al usar el diseño predeterminado de Android
Snackbar.make(findViewById(android.R.id.content),"Your Message",Snackbar.LENGTH_LONG).show();
Simplemente apunte a cualquier
View
dentro
Activity''s
XML de la
Activity''s
.
Puede dar una identificación al grupo de vista raíz, por ejemplo, y usar:
@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();
}
Una función de utilidades para show 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()
}
Ejemplo usando en Actividad
showSnackBar(this, "No internet")
showSnackBar(this, "No internet", duration = Snackbar.LENGTH_LONG)
showSnackBar(activity, "No internet", "OK", View.OnClickListener {
// handle click
})
Ejemplo usando en Fragment
showSnackBar(getActivity(), "No internet")
Espero que ayude