Как отобразить разные значки для строки состояния и панели уведомлений в Android?

Я создаю уведомление Android в соответствии с документацией Android. Я использовал большой значок и маленький значок для панели уведомлений.

В этом случае маленький значок отображается как в строке состояния, так и в панели уведомлений. Я хочу показать разные значки для строки состояния и панели уведомлений, как я могу этого добиться?


person james    schedule 15.07.2014    source источник


Ответы (2)


Для каждого есть разные API. Увидеть ниже:

Notification.Builder nb = new Notification.Builder(context)
    .setContentTitle("title")
    .setContentText("content")
    .setAutoCancel(true)
    .setLargeIcon(largeIcon)
    .setSmallIcon(R.drawable.small_icon)
    .setTicker(s.getText());

http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setSmallIcon%28int%29

http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setLargeIcon%28android.graphics.Bitmap%29

OR

В качестве альтернативы вы можете использовать собственный макет уведомлений.

person Madhur Ahuja    schedule 15.07.2014
comment
Да, я создал уведомление, как вы описали. Но этот метод .setSmallIcon(R.drawable.small_icon) показывает маленький значок на панели уведомлений И в строке состояния. Это правильно ? Если да, я хочу использовать iconA.png для значка строки состояния и iconB.png для маленького значка на панели уведомлений, как я могу это сделать? - person james; 15.07.2014
comment
Нет. Если вы имели в виду иконку №5 в ссылке. Это будет то же самое - person Madhur Ahuja; 15.07.2014
comment
так что нет возможности использовать другой значок для этого? Только маленький значок будет отображаться как в строке состояния, так и в строке уведомлений? - person james; 15.07.2014
comment
О, я забыл об этом, это может быть решением. Спасибо. - person james; 15.07.2014
comment
И, пожалуйста, отредактируйте свой ответ для пользовательского макета уведомлений, чтобы я мог принять это. - person james; 15.07.2014

В документации; есть область уведомлений и ящик уведомлений, я думаю, в вашем случае строка состояния означает область уведомлений. Вы можете использовать следующий код для создания уведомления, установив как маленькую, так и большую иконку.

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.ic_icon);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.logo).setLargeIcon(bm).setContentTitle("title").setContentText("body");

Большой значок представляет собой растровое изображение и отображается в панели уведомлений, маленький значок отображается в области уведомлений, а также в панели уведомлений, в правом нижнем углу большого значка. Он должен быть полностью белым. Если маленький значок цветной, он отображается в виде белого квадрата в области уведомлений.

person erdemlal    schedule 25.11.2014
comment
как сделать маленькую иконку полностью белой? - person Hammad Nasir; 29.01.2017
comment
@HammadNasir просто в вашей студии Android щелкните новые ресурсы изображения, затем выберите значок для уведомления и строки состояния, затем выберите свое изображение, и студия Android создаст правильные значки. - person mhdjazmati; 25.02.2017