在remoteview中添加以编程方式创建的布局以进行通知

时间:2014-01-17 08:51:45

标签: android android-layout android-remoteview

我正在开发一个应用程序,我不得在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? 任何形式的帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

让我们退后一步,你为什么“不得使用自定义布局进行通知”,我不清楚这意味着什么。然后你说“我必须使用以编程方式创建的RemoteViews布局。” - 为什么,你正在做的是什么,这些都是真的?也许如果你能更深入地了解你想要完成的事情,我就能理解你的目标,并帮助你达到这一点。

答案 1 :(得分:-1)

我已经解决了这个问题,不是从库文件提供布局,而是从包含库的应用程序提供布局。我已添加此功能以创建通知布局。

public void searchBar(Context context, String packageName, int layout,
        String tickerText, int icon) {

正如您所看到的,对于使用此库的应用程序,所有内容都是动态的。可以从应用程序本身提供布局和所有其他内容。