我正在创建一个weatherapp,我也在创建一个主屏幕小部件。小部件将根据应用程序的用户设置显示多个位置的天气。因为用户可以选择显示任意数量的位置,我不认为我可以使用xml布局,而是我认为我应该以编程方式创建gui但是如何!
我找不到任何设置gui的方法(比如活动上的setContentView)或者从xml中取消gui(我有一个带有空的线性布局的xml,我以为我可以添加视图)< / p>
如何以编程方式创建小部件gui?
答案 0 :(得分:1)
好吧,经过大量的反复试验,我自己解决了这个问题。我以为我在这里发布我的解决方案。
我创建了一个xml.file,我将其称为entity.xml,其中包含代表一个位置所需的视图。我还创建了另一个名为widgetLayout.xml的xml文件,其中包含一个空的linearLayout。
然后,当我想动态创建小部件布局时,我会这样做。
RemoteViews main = new RemoteViews(getApplicationContext().getPackageName(), R.layout.widget_layout);
main.removeAllViews(R.id.main);
RemoteViews location = new RemoteViews(getApplicationContext().getPackageName(), R.layout.entity);
location.setTextViewText(R.id.SpotName, "loc");
RemoteViews location2 = new RemoteViews(getApplicationContext().getPackageName(), R.layout.entity);
spot1.setTextViewText(R.id.SpotName, "loc2");
main.addView(R.id.main, location);
main.addView(R.id.main, location2);
int[] allWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
AppWidgetManager.getInstance(getApplicationContext()).updateAppWidget(allWidgetIds[0], main);