Как сделать панель инструментов прозрачной?
Это сообщение Q & A, у меня есть прозрачный ActionBar, который накладывает макет. После перехода на последнюю библиотеку поддержки я был вынужден избавиться от ActionBar в пользу панели инструментов. Старые способы сделать его прозрачным и наложить этот макет больше не работает.
true true @style/TransparentActionBar @android:color/transparent
- CollapsingToolbarLayout setTitle () не обновляется, если не свернут
- Дизайн материалов, AppCompat и обратная совместимость
- как выделить выбранный элемент просмотра ресайклеров?
- Жирные модели, тощие ViewModels и немые взгляды, лучший подход MVVM?
- Android разнородный gridview как pinterest?
- Лучше ли создать одноэлементный доступ к контейнеру единства или передать его через приложение?
- Есть ли опция / функция MySQL для отслеживания истории изменений записей?
- Android «высота» не показывает тень
- Как установить текст для просмотра из макета заголовка ящика в навигационном ящике без раздувания
- Составные первичные ключи в сравнении с уникальным полем идентификатора объекта
- Что такое разделение проблем?
- Исключения или коды ошибок
- Действительно ли исключения для исключительных ошибок?
Все, что вам нужно – это определить тему, которая скроет панель действий, определить стиль панели действий с прозрачным фоном и установить этот стиль в виджет панели инструментов. Обратите внимание, что панель инструментов должна быть выделена как последний вид (по всему дереву просмотров)
Планировка:
Расположение панели:
Создайте свой файл toolbar.xml с фоном AppBarLayout @null
и вот результат:
Проверка исходного кода Google Исходный код Я узнал, как сделать панель инструментов полностью прозрачной. Это было проще, чем я думал. Нам просто нужно создать простую форму, подобную этой.
Имя toolbar_bg
– toolbar_bg
А затем в fragmentе или активности .. Добавьте панель инструментов, как это.
И здесь у нас будет полностью прозрачная панель инструментов.
Не добавляйте
если вы это сделаете, это не сработает.
Примечание. Если вам нужно приложение AppBarLayout, установите высоту в 0, чтобы он не рисовал свою тень.
Панель инструментов работает как вид, поэтому ответ очень прост.
toolbar.getBackground().setAlpha(0);
Добавьте следующую строку в style.xml
Теперь добавьте следующую строку в стиле-v21,
и установите тему в качестве андроида: theme = “@ style / AppTheme”
Это сделает панель состояния прозрачной.
Просто используйте следующий код xml:
Код для макета:
И добавьте следующий код в colors.xml :
#00FFFFFF
Это даст вам желаемый результат.
Я реализовал прозрачную панель инструментов, создав две темы Theme.AppCompat.Light.NoActionBar
и установив colorPrimary
для прозрачного цвета.
1) Создайте две темы Создайте одну тему для непрозрачной панели инструментов:
Вторая тема для прозрачного / наложения Панель инструментов:
2) В своем макете действий поместите панель инструментов за содержание, чтобы оно отображалось перед ним:
3) Примените прозрачную тему к своей активности в AndroidManifest.xml
Возможно, вам нужно взглянуть на этот пост прозрачный Actionbar с AppCompat-v7 21
Очки, на которые указывают сообщение,
- Просто убедитесь, что вы используете RelativeLayout для установки панели инструментов и тела.
- Поместите панель инструментов в последнюю очередь.
- Положить прозрачный цвет для андроида: фоновый атрибут панели инструментов
Это должно решить проблему без лишних хлопот.
Самый простой способ поместить прозрачную панель инструментов – это определить непрозрачность в разделе @colors , определить раздел TransparentTheme в разделе @styles и затем поместить эти определения в свою панель инструментов.
@ colors.xml
#33000000
@ styles.xml
@ activity_main.xml
Это результат:
Скриншот прозрачной панели инструментов
Просто добавьте android:background="@android:color/transparent"
как показано ниже в макете вашей панели приложений.
`
Я знаю, что опаздываю на вечеринку. Я создал простой class для управления прозрачностью Toolbar
.
import android.annotation.SuppressLint; import android.graphics.drawable.ColorDrawable; import android.support.v7.widget.Toolbar; public class TransparentToolbarManager { private Toolbar mToolbar; private ColorDrawable colorDrawable; public static final int MAX_ALPHA = 255, MIN_ALPHA = 0; public TransparentToolbarManager(Toolbar mToolbar) { this.mToolbar = mToolbar; this.colorDrawable = new ColorDrawable(mToolbar.getContext().getResources().getColor(R.color.colorPrimary)); } public TransparentToolbarManager(Toolbar mToolbar, ColorDrawable colorDrawable) { this.mToolbar = mToolbar; this.colorDrawable = colorDrawable; } //Fading toolbar public void manageFadingToolbar(int scrollDistance) { if (mToolbar != null && colorDrawable != null) { //FadeinAndOut according to the horizontal scrollValue if (scrollDistance <= MAX_ALPHA && scrollDistance >= MIN_ALPHA) { setToolbarAlpha(scrollDistance); } else if (scrollDistance > MAX_ALPHA) { setToolbarAlpha(MAX_ALPHA); } } } @SuppressLint("NewApi") public void setToolbarAlpha(int i) { colorDrawable.setAlpha(i); if (CommonHelper.isSupport(16)) { mToolbar.setBackground(colorDrawable); } else { mToolbar.setBackgroundDrawable(colorDrawable); } } }
и CommonHelper.isSupport ()
public static boolean isSupport(int apiLevel) { return Build.VERSION.SDK_INT >= apiLevel; }
попробуйте под кодом
style.xml
для панели инструментов поддержки v7 android.support.v7.widget.Toolbar
:
код
toolbar.setBackground(null); // or toolbar.setBackgroundColor(ContextCompat.getColor(getContext(), android.R.color.transparent));
xml ( android:background="@null"
или android:background="@android:color/transparent"
)
если Title is invisible, установите textColor
goto res package и open color.xml установите цвет первичным на # 00000000, это сделано.