2010-05-01 4 views

답변

19

먼저 일부 홈 화면 (예 : Nexus One)은 방향을 변경하지 않습니다.

오리 엔테이션마다 다른 레이아웃을 사용하는 표준 방식은 세로 버전을 res/layout/, 가로 버전을 res/layout-land/으로두면 모두 동일한 이름 (예 : appwidget.xml)입니다. 그런 다음 이름 (예 : R.layout.appwidget)으로 참조하면 Android는 방향에 따라 파일을 선택합니다. 이것은 분명히 액티비티에 적용되므로 앱 위젯에서는 작동한다고 가정하겠습니다.하지만 실제로 시도한 것 같지는 않습니다.

+2

활동과 마찬가지로 appwidgets에서도 작동합니다. –

+2

나는 그가 minWidth & minHeight라고 말한 appwidget 공급자 XML 파일에 대해 이야기하고 있다고 생각했습니다. 당신의 말에서 xml-land의 또 다른 공급자를 선언하겠습니까? – Blundell

+0

내 자신의 질문을 확인했습니다. 두 제공자를 배치하고 하나를 배치 토지에 배치 할 수 있습니다. appwidget이 해당 방향에있을 때만 호출되면 방향 변경시 호출되지 않습니다 – Blundell

2

앱 위젯의 너비와 높이를 변경하려면 과 res/layout-land의 두 가지 다른 android:layout_heightandroid:layout_width 크기를 레이아웃에 정의하십시오. 그런 다음 에 큰 너비와 높이을 정의하십시오. 그렇게하면 위젯을 홈 화면에 추가 할 때가 아닌 방향 변경시 응용 프로그램 위젯의 크기가 변경됩니다.

0

RemoteView를 사용하여 위젯을 동적으로 업데이트하는 경우 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)); 
} 
관련 문제