비교적 간단한 질문이 있습니다. 내 AppWidget에서 인물로 사용할 레이아웃과 가로 레이아웃으로 사용할 레이아웃을 Android에 어떻게 알려야합니까?Android 위젯의 세로 및 가로 방향이 다릅니다.
미리 감사드립니다.
비교적 간단한 질문이 있습니다. 내 AppWidget에서 인물로 사용할 레이아웃과 가로 레이아웃으로 사용할 레이아웃을 Android에 어떻게 알려야합니까?Android 위젯의 세로 및 가로 방향이 다릅니다.
미리 감사드립니다.
먼저 일부 홈 화면 (예 : Nexus One)은 방향을 변경하지 않습니다.
오리 엔테이션마다 다른 레이아웃을 사용하는 표준 방식은 세로 버전을 res/layout/
, 가로 버전을 res/layout-land/
으로두면 모두 동일한 이름 (예 : appwidget.xml
)입니다. 그런 다음 이름 (예 : R.layout.appwidget
)으로 참조하면 Android는 방향에 따라 파일을 선택합니다. 이것은 분명히 액티비티에 적용되므로 앱 위젯에서는 작동한다고 가정하겠습니다.하지만 실제로 시도한 것 같지는 않습니다.
앱 위젯의 너비와 높이를 변경하려면 과 res/layout-land
의 두 가지 다른 android:layout_height
및 android:layout_width
크기를 레이아웃에 정의하십시오. 그런 다음 에 큰 너비와 높이을 정의하십시오. 그렇게하면 위젯을 홈 화면에 추가 할 때가 아닌 방향 변경시 응용 프로그램 위젯의 크기가 변경됩니다.
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));
}
활동과 마찬가지로 appwidgets에서도 작동합니다. –
나는 그가 minWidth & minHeight라고 말한 appwidget 공급자 XML 파일에 대해 이야기하고 있다고 생각했습니다. 당신의 말에서 xml-land의 또 다른 공급자를 선언하겠습니까? – Blundell
내 자신의 질문을 확인했습니다. 두 제공자를 배치하고 하나를 배치 토지에 배치 할 수 있습니다. appwidget이 해당 방향에있을 때만 호출되면 방향 변경시 호출되지 않습니다 – Blundell