假设我有两个小部件布局:Layout1和Layout2。小部件的默认布局是Layout1,但我允许用户选择他们想要的布局。那么如果用户更改为Layout2,我如何以编程方式将布局更改为Layout2?
对于小部件,就像Activity一样,没有setContentView方法。
谢谢
对于小部件,就像Activity一样,没有setContentView方法。
谢谢
在构建您的remoteView时,您需要选择布局。在我的小部件代码中:
public static RemoteViews buildUpdate(Context context, String action) {
RemoteViews updateViews;
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);
String typeface = prefs.getString("typeface", "sans");
int layoutId = R.layout.widget_sans;
if ("monospace".equals(typeface)){
layoutId = R.layout.widget_mono;
} else if ("serif".equals(typeface)){
layoutId = R.layout.widget_serif;
}
updateViews = new RemoteViews(context.getPackageName(),
layoutId);
//actually do things here
//then finally, return our remoteView
AppWidgetManager.getInstance(context).updateAppWidget(
new ComponentName(context, FuzzyWidget.class), updateViews);
}
谢谢Yoni。
我想要添加一些代码。获取RemoteViews对象时,您需要指定上下文和布局ID。这是设置要显示的布局的地方。
例如...
RemoteViews views = null;
if (1 == 1)
views = new RemoteViews(m_context.getPackageName(), R.layout.Layout1);
else
views = new RemoteViews(m_context.getPackageName(), R.layout.Layout2);
AppWidgetManager.getInstance(context).updateAppWidget(
new ComponentName(context, FuzzyWidget.class), views);