Подтвердить что ты не робот

Есть ли способ добавить значок в 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();

Можно ли добавить значок вместо текста в .setAction?

Я знаю Google не рекомендует использовать значок в Snackbar, но я хочу его использовать.

4b9b3361

Ответ 1

ImageSpan может выглядеть неправильно с более длинным текстом (несколько строк). Вместо этого используйте левое соединение, пригодное для рисования (такое же, как 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();

Ответ 2

Слышали ли вы о ImageSpan? Это может помочь вам достичь своей цели! См. Ниже код:

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();]

Не используйте большие значки, так как они не будут поддерживать гравитацию.

Ссылка: Как отобразить изображение в текстовом редакторе Android?

Надеюсь, что это помогло.

Ответ 3

Это все, что вы можете изменить 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 background color;
TextView textView = (TextView)snackbarView .findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.BLUE);//change Snackbar text color;
snackbar.show(); // Don’t forget to show!

К сожалению, мы по-прежнему не можем настроить содержимое Snackbar, как это делается в Toast. В будущем? Я не знаю.