Android RemoteViews addView仅显示第一个视图

时间:2012-02-28 14:45:18

标签: android widget

我已经看过几篇有关此事的帖子,但没有找到我遇到的问题的答案。我正在使用RelativeLayout视图动态填充主屏幕小部件中的LinearLayout,但只显示第一个子视图。调试显示正在创建和添加多个视图,但它们不会出现。这是代码:

RemoteViews views = new RemoteViews(getPackageName(), R.layout.widget);
Cursor statuses_styles = getContentResolver().query(Uri.withAppendedPath(Statuses_styles.CONTENT_URI, widget), new String[]{...}, null, null, Statuses_styles.CREATED + " DESC LIMIT " + page + ",-1");
Log.d(TAG,"statuses count:"+statuses_styles.getCount());
if (statuses_styles.moveToFirst()) {
    int count_status = 0;
    views.removeAllViews(R.id.messages);
    while (!statuses_styles.isAfterLast() && (count_status < 16)) {
        RemoteViews itemView;
        itemView = new RemoteViews(getPackageName(), R.layout.widget_item);
        itemView.setTextViewText(R.id.message, statuses_styles.getString(1));
        itemView.setFloat(R.id.message, "setTextSize", friend_textsize);
        Log.d(TAG,"add view:"+statuses_styles.getString(1));
        views.addView(R.id.messages, itemView);
        count_status++;
        statuses_styles.moveToNext();
    }
}
statuses_styles.close();
mgr.updateAppWidget(appWidgetId, views);

小部件只是一个ID为“messages”的LinearLayout。它被设置为fill_parent的宽度和高度,并且orienation设置为vertical。

窗口小部件项是包含一些文本和图像视图的相对布局。

小部件是4x4。

为什么没有其他观点出现的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:1)

正在添加的视图的子项具有属性layout_alignParentBottom =“true”,这导致它填充整个父项,阻止任何其他子项。删除该属性允许其他孩子出现。

答案 1 :(得分:0)

如果有人正在读这个并且面临将一堆视图膨胀成线性布局的问题,这是xml在其他地方的一部分 只看到第一个膨胀的布局,但不知道为什么。

我的错是,我创建了一个扩展LinearLayout的View类,但是 我没有将方向设置为xml中的垂直方向 实际上使用了视图 - 所以添加的视图,但是horiztonal。

希望,这对任何人都有帮助。