如何将通知按钮设置为图标而不是单词

时间:2017-09-05 10:06:08

标签: android xamarin xamarin.android android-notifications

到目前为止,这是我理解通知的代码。

        Intent mIntent = new Intent(this, typeof(MainActivity));
        Intent gIntent = new Intent(this, typeof(GameMenu));
        Intent sIntent = new Intent(this, typeof(SceneMenu));

        PendingIntent mainIntent = PendingIntent.GetActivity(this, 0, mIntent, 0);
        PendingIntent gameIntent = PendingIntent.GetActivity(this, 0, gIntent, 0);
        PendingIntent sceneIntent = PendingIntent.GetActivity(this, 0, sIntent, 0);
        var notifSound = RingtoneManager.GetDefaultUri(RingtoneType.Notification);

        //long[] pattern = new long[] { 1000, 500, 1000, 2000, 3000, 500, 500, 1000};

        Notification n = new Notification.Builder(this)
                .SetContentTitle("RBOS Notification")
                .SetContentText("You won $1million")
                .SetColor(Color.LightGreen)
                //.SetVibrate(pattern)
                .SetPriority((int)NotificationPriority.Max)
                .SetShowWhen(true)
                .SetSound(notifSound)
                //.SetTicker(DateTime.Now.ToString("hh:mmtt"))
                .SetSmallIcon(Resource.Drawable.ic_fb)
                .SetContentIntent(mainIntent)
                .SetAutoCancel(false)
                .SetLights(Color.Green, 1000, 1000)
                .AddAction(Resource.Drawable.ic_main, "Main", mainIntent)
                .AddAction(Resource.Drawable.ic_play, "Game", gameIntent)
                .AddAction(Resource.Drawable.ic_scene, "Scene", sceneIntent).Build();

        NotificationManager notificationManager =
          (NotificationManager)GetSystemService(NotificationService);

        notificationManager.Notify(0, n);

我对如何设置通知而不是单词的图标本身感到有点困惑。目标api是软糖到更高。 在我的手机华硕与牛轧糖OS,它只显示单词。在其他手机Starmobile和OPPO中,它显示图标但只有部分单词。我希望显示类似无线电通知或vlc播放器通知的内容,以及之前的播放/暂停下一个图标按钮(没有它的单词)。

对于附带问题。自动收报机有什么用?当我把它放在那里时,我看不到任何变化。同样在OPPO中,为什么通知没有立即出现(如电池电量低时)甚至优先级设置为max

1 个答案:

答案 0 :(得分:1)

标准通知在各种API上会出现不同(甚至在相同的API级别,但不同的OEM之间也不同)。

您似乎想要创建RemoteViews并将其用作通知' CustomContentView(就像通知抽屉中的媒体播放器一样)。这样您就可以使用自己的布局和内容覆盖默认通知模板。

实施例

var remoteView = new RemoteViews(PackageName, Resource.Layout.Alarm);
remoteView.SetInt(Resource.Id.myButton, "setText", Resource.String.rocks);

var notification = new Notification.Builder(this)
                   .SetSmallIcon(Android.Resource.Drawable.IcDialogInfo)
                   .SetCustomContentView(remoteView)
                   .Build();

Resource.Layout.Alarm布局只包含一个Button,因此通知只是通知抽屉中的一个按钮:

enter image description here