我有一个(希望)一个相对简单的问题。如何告诉Android在我的AppWidget上使用哪个布局用于纵向以及哪个布局用于横向?
提前致谢!
答案 0 :(得分:19)
首先,请记住一些主屏幕(例如Nexus One)不会改变方向。
每个方向具有不同布局的标准方法是将纵向版本放在res/layout/
中,将横向版本放在res/layout-land/
中,两者都使用相同的名称(例如appwidget.xml
) 。然后,只需按名称引用它(例如R.layout.appwidget
),Android就会根据方向选择文件。这肯定适用于活动,所以我认为它适用于app小部件,但我认为我没有尝试过它。
答案 1 :(得分:2)
要更改应用小部件的宽度和高度,请为布局定义两种不同的android:layout_height
和android:layout_width
尺寸(在res/layout-port
和res/layout-land
中)。然后在appwidgetinfo.xml
中定义更大宽度和高度。这样,app小部件会在方向更改时更改大小,而不仅仅是在将小部件添加到主屏幕时。
答案 2 :(得分:0)
如果您使用RemoteViews动态更新小部件,则可以为updateAppWidget函数调用提供两个单独的RemoteView。例如:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews rvLandscape=new Remoteviews(context,R.layout.widget_landscape);
rvLandscape.addView(...
:
RemoteViews rvPortrait =new Remoteviews(context, R.layout.widget_portrait);
rvPortrait.addView(...
:
appWidgetManager.updateAppWidget(widgetId, new RemoteViews(rvLandscape, rvPortrait));
}