2017-01-27 17 views

Odpowiedz

2

Użyłem BitTextStyle(), aby dodać wyróżniony tekst w powiadomieniu.

return new NotificationCompat.Builder(context) 
     .setSmallIcon(R.drawable.ic_mono) 
     .setContentTitle(title) 
     .setContentText(message) 
     .setLargeIcon(icon) 
     .setColor(ContextCompat.getColor(context, R.color.notification_color)) 
     .setStyle(new NotificationCompat.BigTextStyle().bigText(title)) 
     .setStyle(new NotificationCompat.BigTextStyle().bigText(message).setSummaryText("#hashtag")) 
     .setShowWhen(true) 
     .setAutoCancel(true); 
45

użyć niestandardowego contentView na Builder powiadomień

Aby zdefiniować niestandardowy układ powiadamiania, zacznij od tworzenia instancji RemoteViews obiekt, który powietrzne, układ plik XML. Następnie zamiast metod wywoływania, takich jak setContentTitle(), , należy wywołaćsetContent(). Aby ustawić treści szczegóły w powiadomieniu niestandardowej, należy użyć metody w RemoteViews aby ustawić wartości dzieci widoku za:

Utwórz układ XML zawiadomienia w oddzielnym pliku. Możesz używać dowolnej nazwy pliku, ale musisz użyć rozszerzenia .xml W swojej aplikacji, użyj metod RemoteViews do zdefiniowania ikon i tekstu powiadomienia. Umieść ten obiekt RemoteViews w swoim NotificationCompat.Builder, wywołując setContent(). Unikaj ustawiania tła Tło do rysowania na obiekcie RemoteViews, ponieważ kolor tekstu może stać się nieczytelny.

custom_push.xml ma moje poglądy niestandardowych R.id.image, R.id.text, R.id.title

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout" 
    android:layout_width="fill_parent" 
    android:layout_height="64dp" 
    android:padding="10dp" > 
    <ImageView 
     android:src="@mipmap/ic_launcher" 
     android:id="@+id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_marginRight="10dp" /> 
    <TextView 
     android:textSize="13dp" 
     android:textColor="#000" 
     android:text="Testing" 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/image" 
     /> 
    <TextView 
     android:textSize="13dp" 
     android:textColor="#000" 
     android:text="Testing is awecome" 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/image" 
     android:layout_below="@id/title" 
     /> 
</RelativeLayout> 

utworzenie obiektu RemoteViews i ustawić go,

RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_push); 
contentView.setImageViewResource(R.id.image, R.mipmap.ic_launcher); 
contentView.setTextViewText(R.id.title, "Custom notification"); 
contentView.setTextViewText(R.id.text, "This is a custom layout"); 

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) 
.setSmallIcon(R.drawable.icon) 
.setContent(contentView); 

Notification notification = mBuilder.build(); 
notification.flags |= Notification.FLAG_AUTO_CANCEL; 
notification.defaults |= Notification.DEFAULT_SOUND; 
notification.defaults |= Notification.DEFAULT_VIBRATE; 
notificationManager.notify(1, notification); 

enter image description here

check: https://developer.android.com/guide/topics/ui/notifiers/notifications.html#ApplyStyle

+0

Potrzebuję dostosować widok. dobrze? –

+0

@khaleel_jageer yess w podanym linku znajduje się podpowiedź o nazwie ** Custom Notification Layouts ** przeczytaj, że jeśli go nie dostałeś, zapytaj: –

+4

To powinna być zaakceptowana odpowiedź! – Kaushal28

3

Domyślam się, czego szukasz: .setSubText(). Powiadomienie typu flipkart, które wskazałeś, zdecydowanie nie jest widokiem niestandardowym.

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
         .setSmallIcon(icon) 
         .setSubText("Limited Stocks, Don't Wait!") <------- 
         .setContentTitle("Custom Notification Title") 
notificationBuilder.notify(1, notificationBuilder.build()); 
Powiązane problemy