以编程方式创建主屏幕小部件gui

时间:2012-03-27 00:12:20

标签: android android-widget

我正在创建一个weatherapp,我也在创建一个主屏幕小部件。小部件将根据应用程序的用户设置显示多个位置的天气。因为用户可以选择显示任意数量的位置,我不认为我可以使用xml布局,而是我认为我应该以编程方式创建gui但是如何!

我找不到任何设置gui的方法(比如活动上的setContentView)或者从xml中取消gui(我有一个带有空的线性布局的xml,我以为我可以添加视图)< / p>

如何以编程方式创建小部件gui?

1 个答案:

答案 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);