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é.