10

我有一个(希望)一个相对简单的问题。如何告诉 Android 在我的 AppWidget 上哪个布局用于纵向以及哪个布局用于横向?

提前致谢!

4

3 回答 3

19

首先,请记住,某些主屏幕(例如 Nexus One)不会改变方向。

每个方向具有不同布局的标准方法是将纵向版本放在 中res/layout/,将横向版本放在 中res/layout-land/,两者都使用相同的名称(例如,appwidget.xml)。然后,只需通过名称(例如, )引用它,R.layout.appwidgetAndroid 将根据方向选择文件。这绝对适用于活动,所以我认为它适用于应用程序小部件,但我认为我没有真正尝试过。

于 2010-05-01T23:35:46.447 回答
2

要更改应用小部件的宽度和高度,请为您的布局定义两个不同的android:layout_heightandroid:layout_width尺寸(在res/layout-port和中res/layout-land)。然后在你appwidgetinfo.xml. 这样,应用程序小部件会在方向更改时更改大小,而不仅仅是在您将小部件添加到主屏幕时。

于 2011-08-10T08:24:05.883 回答
0

如果您使用 RemoteViews 动态更新您的小部件,您可以为 updateAppWidget 函数调用提供两个单独的 RemoteViews。例如:

@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));
}
于 2014-10-04T16:36:52.550 回答