2016-07-26 64 views
1

我想创建一个通知,为我的应用程序具有通常的图标,标题和潜台词,但也有右侧的操作按钮通知无需扩展成大模式。文字的线条总是很短,所以这个按钮有足够的空间。目前,它看起来像这样Android通知 - 在普通视图通知(没有扩大到大视图)上的动作按钮

1

但是,当它被另一个通知压缩到普通视图,它看起来像这样,失去按钮

2

我与自定义视图RemoteViews,但问题是我不想手动设置图标和文本的位置和样式。在多个设备上让系统继续照顾它们会更加可靠。

是否可以将我自己的按钮添加到通知出现在第二张图片的右侧?有点像将远程视图的一个元素与Android生成的标准布局组合在一起?从我读过的内容来看,我认为在普通视图中使用动作按钮是不可能的?

我希望能够做到这一点的原因是允许用户点击闹钟以确认他们已经看到它,以便它不会熄灭,但他们仍然有即将发生的事件的通知。点击除闹钟按钮以外的任何地方应该像平常一样打开应用程序。

代码明智,它看起来像这样,与远程视图注释掉。

RemoteViews remoteViews = new RemoteViews(activity.getPackageName(), 
       R.layout.custom_notification); 

     String eventDescription = preferences.getString(activity.getResources().getString(R.string.next_event_description), "Freemasons run the country"); 
     String eventTime = preferences.getString(activity.getResources().getString(R.string.next_event_time), "00:00"); 

    NotificationManager notificationManager = (NotificationManager) 
    activity.getSystemService(activity.NOTIFICATION_SERVICE); 

    Intent intent = new Intent(activity, MainActivity.class); 
    PendingIntent pIntent = PendingIntent.getActivity(activity, 0 , intent, 0); 

    Notification.Action action = new Notification.Action.Builder(
      Icon.createWithResource(activity, R.mipmap.alarm_icon), 
      nextEventAlarmMinutes.toString(), 
      pIntent).build(); 

    Notification.Builder builder = new Notification.Builder(activity) 
      //.setContent(remoteViews) 
      .setContentTitle(eventDescription) 
      .setContentText(eventTime) 
      .setSmallIcon(R.mipmap.alarm_icon) 
      .setContentIntent(pIntent) 
      .addAction(action) 
      //.setPriority(Notification.PRIORITY_HIGH) 
      .setWhen(0) 
      .setVisibility(Notification.VISIBILITY_PUBLIC) 
      .setAutoCancel(false); 

     notificationManager.notify(0, builder.build()); 

自定义视图XML只是有一个相对布局和按钮

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" > 

<Button 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:padding="10dp" /> 

是否有可能,相对布局覆盖了整个事情,我可以只使用按钮没有一个父视图持有它自己的观点?

+0

问题,而不是使用URL – Jas

+0

@马特你能请张贴相关的代码的一部分嵌入你的形象? – Leo

回答

0
//Share intent 
Intent shareAction = new Intent(this, ActShare.class); 
PendingIntent pendingIntentShare = PendingIntent.getActivity(this, 12345, shareAction, PendingIntent.FLAG_UPDATE_CURRENT); 
mBuilder.addAction(R.drawable.share, "Share", pendingIntentShare); 

//Editintent 
Intent EditAction = new Intent(this, ActEdit.class); 
PendingIntent pendingIntentEdit = PendingIntent.getActivity(this, 12345, EditAction, PendingIntent.FLAG_UPDATE_CURRENT); 
mBuilder.addAction(R.drawable.edit, "Edit", pendingIntentEdit); 

//Share intent 
Intent deleteAction = new Intent(this, ActDelete.class); 
PendingIntent pendingIntentDelete = PendingIntent.getActivity(this, 12345, deleteAction, PendingIntent.FLAG_UPDATE_CURRENT); 
mBuilder.addAction(R.drawable.delete, "Delete", pendingIntentDelete); 

添加该代码的addAction在默认的Android通知..

+0

对不起,我不明白这是如何回答这个问题呢?这不仅仅是将三种不同的操作添加到通知中,并且仍然要求它处于大模式下? – Matt