Intereting Posts
Как автоматически очистить кеш-память? Слайд-шоу в android viewpager? Как отключить анимацию в коде при запуске тестов Espresso Приложение для Android перезапускается при открытии, нажав значок приложения Как Flurry предоставляет бесплатный аналитический сервис? Android Как получить текущее местоположение башни от оператора сети на Android Android: rebuild теперь требует уровня соответствия компилятора 5.0 или 6.0. Вместо этого найдено «1.7». Зачем удалять @Override? Insmod: init_module не удалось (ошибка формата Exec) Ширина и цвет границы элемента списка ListView для Android API Mobile Vision – объединить новый объект-детектор для продолжения обработки кадра NullPointerException: int android.support.v4.app.FragmentManagerImpl.mCurState ссылка на нулевой объект Можно ли вставить столбец в listview во время выполнения? Получите реальное разрешение экрана на сэндвич с мороженым Как искать контакты с адресом (FORMATTED_ADDRESS) с одним запросом? Расширения OpenGL ES 2.0 на устройствах Android

Есть ли способ добавить значок в 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 , но я хочу его использовать.

Solutions Collecting From Web of "Есть ли способ добавить значок в Snackbar?"

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

Вы слышали о 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();] 

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

Ref: Как отображать изображение в TextView от Android?

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

Это все, что вы можете изменить 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! 

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