我试图为我的应用创建通知,该通知包含通常的图标,标题和子文字,但也包含通知右侧的操作按钮,而无需扩展到大模式。文本行总是很短,因此按钮有足够的空间。它目前看起来像这样
但是当它被另一个通知压缩到普通视图时,它看起来像这样并且丢失了按钮
我使用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 :(得分: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);
在默认的android通知中将此代码添加到addAction ..
答案 1 :(得分:0)
即使通知被折叠,您也可以将通知与媒体控件一起使用以显示操作按钮。请参阅文档here.