Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 您如何使用所需的背景色(类似于阿迪达斯跑步应用程序)填充整个通知弹出窗口?_Android - Fatal编程技术网

Android 您如何使用所需的背景色(类似于阿迪达斯跑步应用程序)填充整个通知弹出窗口?

Android 您如何使用所需的背景色(类似于阿迪达斯跑步应用程序)填充整个通知弹出窗口?,android,Android,我希望通过自定义视图实现以下效果 整个通知背景的填充颜色 有行动按钮 我试过几种方法。它们都不起作用 没有应用样式。应用自定义视图和自定义大视图 结果 这不是我想要的,因为它没有操作按钮 应用NotificationCompat.decorredCustomViewStyle样式。应用自定义视图和自定义大视图 结果 这不是我想要的,因为不是整个背景都是彩色的。 应用MeidaStyle样式。应用自定义视图和自定义大视图 结果 这不是我想要的,因为它没有操作按钮 对于如何实施类似于

我希望通过自定义视图实现以下效果

  • 整个通知背景的填充颜色
  • 有行动按钮
  • 我试过几种方法。它们都不起作用


    没有应用样式。应用自定义视图和自定义大视图 结果

    这不是我想要的,因为它没有操作按钮


    应用NotificationCompat.decorredCustomViewStyle样式。应用自定义视图和自定义大视图 结果

    这不是我想要的,因为不是整个背景都是彩色的。


    应用MeidaStyle样式。应用自定义视图和自定义大视图 结果

    这不是我想要的,因为它没有操作按钮


    对于如何实施类似于阿迪达斯跑步的任何建议,我们将不胜感激

    乍一看,阿迪达斯Running
    NotificationCompat.BigTextStyle
    风格非常接近,但填充了整个背景色,并且前景字体颜色正确


    谢谢。

    您不需要任何定制样式。相反,您需要在
    NotificationCompat.Builder
    上使用来为整个通知着色

    根据文件:

    设置此通知是否应着色。设置后,使用设置的颜色将用作此通知的背景色

    这只能用于高优先级的持续任务,如导航、持续呼叫或用户的其他类似高优先级事件

    对于大多数样式,仅当通知用于前台服务通知时,才会应用颜色


    酷!正如我以前使用
    setColorized
    的经验一样,它使用的是正常的优先级通知(这似乎不起任何作用)。在前台服务通知中,似乎
    setColorized
    会产生不同的行为。快速检查:是否有可能在整个通知背景上应用渐变绘制?如果不是的话,我想我还是用原色吧。@CheokYanCheng-根据我特别引用的文档,前台服务通知的处理方式应该有所不同,是的。不,您只能使用普通颜色,不能使用渐变色。
    private void initRemoteViews(String timerText) {
        if (remoteViews == null) {
            remoteViews = new RemoteViews(
                    PomodoroApplication.instance().getPackageName(),
                    PomodoroOptions.INSTANCE.getWorkColor().widgetTimerResourceId
            );
        }
    
        if (bigRemoteViews == null) {
            bigRemoteViews = new RemoteViews(
                    PomodoroApplication.instance().getPackageName(),
                    PomodoroOptions.INSTANCE.getWorkColor().widgetBigTimerResourceId
            );
        }
    
        remoteViews.setTextViewText(R.id.text_view, timerText);
        bigRemoteViews.setTextViewText(R.id.text_view, timerText);
    
    }
    
    private void initPendingIntents() {
        final Context context = PomodoroApplication.instance().getApplicationContext();
    
        if (this.mainPendingIntent == null) {
            final android.content.Intent mainIntent = new Intent(context, TimerActivity.class);
            mainIntent.addFlags(getPreventDoubleLaunchFlagsForLauncher());
            this.mainPendingIntent = PendingIntent.getActivity(
                    context,
                    0,
                    mainIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT
            );
        }
    
        if (this.pausePendingIntent == null) {
            Intent pauseIntent = new Intent(context, PauseBroadcastReceiver.class).setAction(PauseBroadcastReceiver.PAUSE_ACTION_NAME);
            this.pausePendingIntent = PendingIntent.getBroadcast(
                    context,
                    0,
                    pauseIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT
            );
        }
    }
    
    private Notification createNotification(long currentDuration) {
        String timerText = Utils.getTimerText(
                getMaxDuration(),
                currentDuration
        );
    
        initPendingIntents();
        initRemoteViews(timerText);
    
        final Context context = PomodoroApplication.instance().getApplicationContext();
    
        NotificationCompat.Builder builder = new NotificationCompat.Builder(
                    context,
                    Utils.createTimerChannel()
            )
                .setColor(Color.RED)
                .setContentIntent(mainPendingIntent)
                .setOngoing(true)
                .setAutoCancel(false)
                .setSound(null)
                .setVibrate(null)
                .setSmallIcon(R.drawable.ic_stat_name);
        
        NotificationCompat.Action pauseAction = new NotificationCompat.Action(
                0, context.getString(R.string.pause), pausePendingIntent
        );
    
        builder.addAction(pauseAction);
    
        builder.setCustomContentView(remoteViews);
        builder.setCustomBigContentView(bigRemoteViews);
    
        Notification notification = builder.build();
    
        return notification;
    }
    
    builder.setStyle(new NotificationCompat.DecoratedCustomViewStyle());
    builder.setCustomContentView(remoteViews);
    builder.setCustomBigContentView(bigRemoteViews);
    
    androidx.media.app.NotificationCompat.MediaStyle mediaStyle = new androidx.media.app.NotificationCompat.MediaStyle();
    builder.setStyle(mediaStyle);
    builder.setCustomContentView(remoteViews);
    builder.setCustomBigContentView(bigRemoteViews);