Прозрачный фон уведомлений в Android

Я хочу создать уведомление Android с прозрачным фоном. Я использую bigContent с remoteViews для создания собственного макета, но когда я устанавливаю цвет фона основного макета на @android/color/transparent, ничего не происходит. Я все еще вижу стандартный белый фон уведомлений.

Как установить прозрачный фон для уведомлений Android? Отмечу, что я имею в виду не панель уведомлений (или строку состояния), а фон пользовательского уведомления.


person Michał Kuchtar    schedule 26.07.2015    source источник
comment
Вы уверены, что стандартный белый фон исходит не от самого трея уведомлений?   -  person CommonsWare    schedule 26.07.2015
comment
Да, я уверен;) Я создаю remoteViews с прозрачным фоном xml-макета, но уведомление выглядит так, как будто это «что-то» позади моего макета, и я не знаю, как изменить цвет этого «чего-то»: D   -  person Michał Kuchtar    schedule 26.07.2015
comment
Да, я уверен - как вы это определили? Если вы не пишете собственное пользовательское ПЗУ и не ограничиваете свое приложение этим пользовательским ПЗУ, вы не контролируете поведение панели уведомлений. Разработчик ПЗУ (обычно производитель устройства) определяет, как выглядит и работает панель уведомлений.   -  person CommonsWare    schedule 26.07.2015
comment
Я думаю, что мы не поняли друг друга. С помощью remoteViews я могу создать собственный макет уведомлений. И в этом макете я хочу установить прозрачный фон. Но когда я запускаю свое приложение, это уведомление имеет не прозрачный фон, а белый фон.   -  person Michał Kuchtar    schedule 26.07.2015
comment
И в этом макете я хочу установить прозрачный фон — вы не контролируете, что находится за вашим RemoteViews. Вполне возможно, что все, что находится за вашим RemoteViews, будет белым, например, фон панели уведомлений. Вы утверждаете, что уверены, что панель уведомлений не является источником белого цвета. Как вы это определили? Или, другими словами, если не белый, то что вы ожидаете увидеть?   -  person CommonsWare    schedule 26.07.2015
comment
Пожалуйста, посмотрите на изображение: какое-то китайское приложение Первое уведомление имеет прозрачный фон. Второй имеет стандартный фон. Мой вопрос: как я могу установить фон в своем уведомлении, как в первом уведомлении с картинки?   -  person Michał Kuchtar    schedule 26.07.2015
comment
Первое уведомление имеет прозрачный фон — если вы имеете в виду то, что выглядит как прогноз погоды на четыре дня, я не знаю, является ли это Notification или функцией панели уведомлений этого устройства. Вам нужно будет установить это приложение на какое-нибудь свое устройство, посмотреть, отображается ли этот четырехдневный прогноз в области уведомлений, а затем посмотреть, белый ли фон. Если прогноз на четыре дня не отображается, значит, на вашем снимке экрана показан только один Notification. Если он отображается, но имеет белый фон, вероятно, это фон панели уведомлений вашего устройства.   -  person CommonsWare    schedule 26.07.2015
comment
Итак, в Android ... Могу ли я установить фон уведомлений таким же, как фон панели уведомлений, или нет;)? Показывать например только тексты без рамки? Так это будет похоже на этот 4-дневный прогноз?   -  person Michał Kuchtar    schedule 26.07.2015
comment
AFAIK, вы уже в меру своих возможностей. На вашем устройстве, возможно, он белый. Или, возможно, ваше конкретное устройство помещает свой собственный фон на отдельные плитки белого цвета. Или, возможно, ваше конкретное устройство помещает свой собственный фон за расширенными уведомлениями (bigContent), который является белым. Нет никакой гарантии, что будет за вашим RemoteViews, не говоря уже о том, какая у него будет общая цветовая гамма. Это зависит от того, кто создал ПЗУ (производитель устройства, моддер ПЗУ и т. д.).   -  person CommonsWare    schedule 26.07.2015
comment
stackoverflow.com/questions/29311078/ Если вы все еще ищете, это, возможно, ваш ответ.   -  person ShadowRz    schedule 24.08.2019
comment
stackoverflow.com/questions/29311078/ Если вы все еще ищете это, вероятно, ваш ответ.   -  person ShadowRz    schedule 24.08.2019


Ответы (1)


Как говорит CommonsWare в комментариях, это невозможно сделать.

Если производитель телефона не внес изменений (что, скорее всего, не разрешено), уведомление строится слоями. Нижний слой — это фоновый вид, он имеет сероватый цвет на леденце (не помню, чтобы леденец был в моей голове) поверх фонового представления у вас есть представление содержимого, предоставленное уведомлением (представление, которое вы можете сделать ). Когда вы делаете свой вид прозрачным, вы показываете фон. Вы не можете изменить фон.

На леденце это значения по умолчанию:

<color name="notification_legacy_background_color">#ff1a1a1a</color>

<!-- The color of the material notification background -->
<color name="notification_material_background_color">#fffafafa</color>

<!-- The color of the material notification background when dimmed -->
<color name="notification_material_background_dimmed_color">#d4ffffff</color>

 <!-- The color of the material notification background when low priority -->
<color name="notification_material_background_low_priority_color">#ffe0e0e0</color>

<!-- The color of the material notification background for media notifications when no custom
     color is specified -->
<color name="notification_material_background_media_default_color">#ff424242</color>

Дополнительные сведения: http://androidxref.com/5.1.1_r6/xref/frameworks/base/packages/SystemUI/res/values/colors.xml#80

http://androidxref.com/5.1.1_r6/xref/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java

person JohanShogun    schedule 26.07.2015
comment
Если не изменен производителем телефона (что, скорее всего, не разрешено) - за пределами устройств серии Nexus любое другое устройство крупного производителя обычно меняет внешний вид панели уведомлений по сравнению с тем, что есть в AOSP. И я не вижу в Документе определения совместимости ничего, что могло бы этому помешать. - person CommonsWare; 26.07.2015
comment
Спасибо. Теперь я знаю, что я не могу этого сделать ;) - person Michał Kuchtar; 26.07.2015
comment
Вы правы, CommonsWare, просто прочитайте документ о совместимости, там ничего не говорится о том, что вы не можете настроить работу. - person JohanShogun; 26.07.2015