如何为 android 创建通知之类的 inshorts

Posted

技术标签:

【中文标题】如何为 android 创建通知之类的 inshorts【英文标题】:How to create inshorts like notifications for android 【发布时间】:2017-03-29 05:45:39 【问题描述】:

如何为安卓创建推送通知等简写。通知包括通知底部带有文本的完整图像。

小通知只是文本,但当你展开它时,它会在背景中显示图像,底部有文本。

有人可以帮我解决这个问题吗?以下是截图

【问题讨论】:

你需要自定义 Remoteviews laurivan.com/android-notifications-with-custom-layout developer.android.com/reference/android/app/… 【参考方案1】:

您需要将自定义远程视图扩展为通知的布局,如下所示:

layout_custom_notification.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_>

    <ImageView
        android:id="@+id/image_news"
        android:layout_
        android:layout_
        android:scaleType="centerCrop"
        android:src="@mipmap/dine_main_item_bg1" />

    <TextView
        android:id="@+id/tv_news_title"
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="20dp"
        android:layout_toLeftOf="@+id/tv_news_time"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:text="Trump signs order to roll back Obama-era climate policies"
        android:textColor="@android:color/white"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/tv_news_time"
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="20dp"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:text="9:14 AM"
        android:textColor="@android:color/white"
        android:textSize="16sp" />

    <TextView
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:layout_marginTop="20dp"
        android:padding="8dp"
        android:text="Share"
        android:textColor="@android:color/white"
        android:textSize="16sp" />

</RelativeLayout>

此后,将此布局设置为通知中的内容视图,如下所示:

RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.layout_custom_notification);
        contentView.setImageViewResource(R.id.image_news, R.drawable.ic_launcher);
        contentView.setTextViewText(R.id.tv_news_time, "9:14 AM");
        contentView.setTextViewText(R.id.tv_news_title, "Trump signs order to roll back Obama-era climate policies");

        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(icon)
            .setContent(contentView)
            .setContentTitle("Custom Notification")
            .setContentIntent(contentIntent)   
            .setWhen(when);

...
mNotificationManager.notify(1, notificationBuilder.build());

【讨论】:

您好,感谢您的更新。它正在部分工作。但是通知是小通知,而不是大通知。你能帮我解决这个问题吗 同样在点击通知时,应用程序没有打开。如何做到这一点? 感谢@Suraj ...但全屏图像在顶部和底部带有空格(白色填充)。如何解决这个问题。 @Nikhil 请提供截图 我已在下一个答案中添加了屏幕截图。请检查【参考方案2】:

PFB 顶部和底部有填充的通知的屏幕截图。 测试 62 是通知消息,它​​出现在空白处。我希望它出现在底部的图像之上。

【讨论】:

您可以在 layout_custom_notification.xml 的 ImageView 中包含 android:scaleType="centerCrop",如我更新的答案所示

以上是关于如何为 android 创建通知之类的 inshorts的主要内容,如果未能解决你的问题,请参考以下文章

如何为Android创建小于O的通知通道

Azure 通知:如何为 android 配置 FCM

如何为自定义 Android 通知添加垂直线到 RemoteView?

如何为 Google Cloud Messaging 实现服务器以发送推送通知 android studio

如何为 Android 中的日期和时间选择器对话框设置的特定时间和日期设置通知

如何为Xamarin.Android AlarmManager设置准确的时间