我正在构建一个Android小部件,并且布局文件将在父布局中包含n
次,具体取决于可用的数据量。
例如,如果有3个数据可用,我按如下方式构建小部件:
widget.xml
status_layout.xml
status_layout.xml
status_layout.xml
要包含status_layout.xml
个视图,我会从小部件的更新服务中执行以下操作:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
RemoteViews childView = new RemoteViews(context.getPackageName(), R.layout.status_layout);
childView.setTextViewText(R.id.platform,
"Test text goes here \n " + new Random().nextInt());
views.addView(R.id.layout, childView);
这在第一次调用时工作正常,但后续更新会在现有视图的顶部绘制,而不是替换它。这使得文本不可读。
额外代码
尝试清除现有视图:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.removeAllViews(R.layout.widget); // doesn't work
views.removeAllViews(R.layout.status_layout); // doesn't work
单击按钮时触发刷新:
int[] ids = AppWidgetManager.getInstance(context).getAppWidgetIds(new ComponentName(context, MyWidgetProvider.class));
Intent refreshIntent = new Intent(context, MyWidgetProvider.class);
refreshIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
refreshIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.refresh, pendingIntent);
我已经尝试了很多但是弄不清楚为什么 - 任何帮助都会非常感激。