example custom android android-snackbar

android - custom - ¿Hay alguna manera de agregar un icono a un Snackbar?



snackbar material design (3)

¿Has oído hablar de ImageSpan? ¡Puede ayudarte a alcanzar tu objetivo! Ver código abajo:

SpannableStringBuilder builder = new SpannableStringBuilder(); builder.append("My message ").append(" "); builder.setSpan(new ImageSpan(MainActivity.this, R.drawable.ic_launcher), builder.length() - 1, builder.length(), 0); builder.append(" next message"); Snackbar.make(parent view, builder, Snackbar.LENGTH_LONG).show();]

No utilice iconos grandes, ya que no mantendrán la gravedad.

Ref: ¿Cómo mostrar la imagen en TextView de Android?

Espero que haya ayudado.

Este es mi código Snackbar:

Snackbar.make(viewHolder.productView, "Some Text Here ..", Snackbar.LENGTH_SHORT) .setAction("I want be a icon here instead TEXT", new View.OnClickListener() { @Override public void onClick(View v) { // Perform anything for the action selected } }) .show();

¿Hay .setAction agregar un ícono en lugar de texto en .setAction ?

Sé que Google sugirió no usar el icono en Snackbar , pero quiero usarlo.


Es posible que ImageSpan no se vea bien con el texto más largo (varias líneas). En su lugar, usa un compuesto izquierdo (como el de android:drawableLeft ).

Snackbar snackbar = Snackbar.make(layout, R.string.test, Snackbar.LENGTH_LONG); View snackbarLayout = snackbar.getView(); TextView textView = (TextView)snackbarLayout.findViewById(android.support.design.R.id.snackbar_text); textView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.white_checkbox, 0, 0, 0); textView.setCompoundDrawablePadding(getResources().getDimensionPixelOffset(R.dimen.snackbar_icon_padding)); snackbar.show();


Esto es todo lo que puedes cambiar de un Snackbar :

Snackbar snackbar = Snackbar .make(parentLayout, R.string.snackbar_text, Snackbar.LENGTH_LONG) .setAction(R.string.snackbar_action, myOnClickListener); snackbar.setActionTextColor(Color.CYAN); View snackbarView = snackbar.getView(); snackbarView.setBackgroundColor(Color.YELLOW);//change Snackbar''s background color; TextView textView = (TextView)snackbarView .findViewById(android.support.design.R.id.snackbar_text); textView.setTextColor(Color.BLUE);//change Snackbar''s text color; snackbar.show(); // Don’t forget to show!

Desafortunadamente, todavía no podemos personalizar el contenido de un Snackbar como lo hacemos con Toast . ¿En el futuro? No lo sé.