10

(うまくいけば)比較的簡単な質問があります。AppWidgetで縦向きに使用するレイアウトと横向きに使用するレイアウトをAndroidに指示するにはどうすればよいですか?

前もって感謝します!

4

3 に答える 3

19

まず、一部のホーム画面(Nexus Oneなど)は向きが変わらないことに注意してください。

向きごとに異なるレイアウトを使用するための標準的なアプローチは、縦向きのバージョンをにres/layout/、横向きのバージョンをにres/layout-land/、両方とも同じ名前(たとえば、appwidget.xml)で配置することです。次に、名前(たとえばR.layout.appwidget)でそれを参照するだけで、Androidは向きに基づいてファイルを選択します。これは間違いなくアクティビティで機能するので、アプリウィジェットでも機能すると思いますが、実際に試したことはないと思います。

于 2010-05-01T23:35:46.447 に答える
2

アプリウィジェットの幅と高さを変更するには、レイアウトに2つの異なるサイズandroid:layout_heightandroid:layout_widthサイズを定義します(res/layout-portとでres/layout-land)。次に、でより大きな幅と高さを定義しますappwidgetinfo.xml。このように、ウィジェットをホーム画面に追加したときだけでなく、向きが変更されたときにアプリウィジェットのサイズが変更されます。

于 2011-08-10T08:24:05.883 に答える
0

RemoteViewを使用してウィジェットを動的に更新している場合は、updateAppWidget関数呼び出しに2つの別々の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));
}
于 2014-10-04T16:36:52.550 に答える