我正在开发一个应用程序,我不得在notification
使用自定义布局。相反,我必须为programmatically
使用RemoteViews
创建的布局。这是我正在为布局做的事情:
Notification notify = new Notification.Builder(context)
.setContentTitle("Notification")
.setLargeIcon(
decodeBase64(NotificationImages.notification_ic_stat_notify))
.build();
LinearLayout linLayout = new LinearLayout(context);
@SuppressWarnings("deprecation")
Drawable bg = new BitmapDrawable(
decodeBase64(NotificationImages.search_bg));
linLayout.setOrientation(LinearLayout.HORIZONTAL);
linLayout.setBackground(bg);
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
linLayout.setLayoutParams(llp);
ImageView icon = new ImageView(context);
@SuppressWarnings("deprecation")
Drawable icon_bg = new BitmapDrawable(
decodeBase64(NotificationImages.notification_logo));
icon.setBackground(icon_bg);
LinearLayout.LayoutParams image_lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
image_lp.setMargins(20, 0, 0, 0);
image_lp.gravity = Gravity.CENTER_VERTICAL;
icon.setLayoutParams(image_lp);
linLayout.addView(icon);
忽略base64
解码的使用,我正在为一些随机目的而做。
所以,现在我想要的是将layout
添加到RemoteViews
以便在notification panel
上显示它。
像这样:
RemoteViews contentView = new RemoteViews(PACKAGE_NAME,
R.layout.persistent_notification_layout);
如何从编程创建的布局中替换layout.persistent_notification_layout
?
任何形式的帮助将不胜感激。
答案 0 :(得分:1)
让我们退后一步,你为什么“不得使用自定义布局进行通知”,我不清楚这意味着什么。然后你说“我必须使用以编程方式创建的RemoteViews布局。” - 为什么,你正在做的是什么,这些都是真的?也许如果你能更深入地了解你想要完成的事情,我就能理解你的目标,并帮助你达到这一点。
答案 1 :(得分:-1)
我已经解决了这个问题,不是从库文件提供布局,而是从包含库的应用程序提供布局。我已添加此功能以创建通知布局。
public void searchBar(Context context, String packageName, int layout,
String tickerText, int icon) {
正如您所看到的,对于使用此库的应用程序,所有内容都是动态的。可以从应用程序本身提供布局和所有其他内容。