Como criar um Layout de notificação personalizado no android?
Como mostrar o conteúdo completo na notificação em tempo de frist no android com o uso do estilo de notificação ou necessidade de ir para o layout personalizado??
4 answers
Use um costume contentView
no seu construtor de notificações
Para definir uma disposição de notificação personalizada, comece por instanciar um O objecto RemoteViews que inflaciona um ficheiro de layout XML. Então, em vez de métodos de chamada como setContentTitle (), call
setContent()
. Definir detalhes de conteúdo na notificação personalizada, use os métodos emRemoteViews
para definir os valores das crianças da vista:Crie uma disposição XML para a notificação em separado arquivo. Você pode usar qualquer nome de arquivo que desejar, mas você deve usar a extensão .xml Na sua aplicação, use os métodos
RemoteViews
para definir os ícones e o texto da sua notificação. Coloque este objeto no seuNotificationCompat.Builder
chamandosetContent () . Evitar definir a fundo desenhável no seu objecto RemoteViews, porque o seu texto a cor pode tornar-se ilegível.
personal_push.o xml tem as minhas vistas personalizadas 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>
Instanciando um RemoteViews object and set it,
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);
Verifique : https://developer.android.com/guide/topics/ui/notifiers/notifications.html#ApplyStyle
Usei o BitTextStyle () para adicionar o texto seleccionado na notificação.
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);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(icon)
.setSubText("Limited Stocks, Don't Wait!") <-------
.setContentTitle("Custom Notification Title")
notificationBuilder.notify(1, notificationBuilder.build());
Nova Notificação.O construtor (isto) está desacreditado . Por isso, temos de o substituir por New NotificationCompat.Construtor (isto, "channelId");