support studio snack custom bar agregar android material-design android-snackbar

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