2

我正在开发一个应用程序,在该应用程序中我不必为notification. 相反,我必须programmaticallyRemoteViews. 这是我正在为布局做的事情:

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解码的使用,这是我出于某种随机目的而做的。所以,现在我想要添加这个layoutRemoteViewsnotification panel. 像这样的东西:

RemoteViews contentView = new RemoteViews(PACKAGE_NAME,
            R.layout.persistent_notification_layout);

如何,我可以layout.persistent_notification_layout从以编程方式创建的布局中替换?任何形式的帮助将不胜感激。

4

2 回答 2

0

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

于 2014-01-29T16:46:14.963 回答
-1

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

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

如您所见,对于使用此库的应用程序而言,这里的所有事物都是动态的。布局和所有其他内容可以从应用程序本身提供。

于 2014-02-06T06:35:25.030 回答