Виджеты для Android различной портретной и альбомной ориентации
У меня есть (надеюсь) относительно простой вопрос. Как сообщить Android, какой макет использовать для портрета и какой макет использовать для альбомной ориентации на моем AppWidget?
Спасибо заранее!
Ответ 1
Во-первых, помните, что некоторые домашние экраны (например, Nexus One) не меняют ориентацию.
Стандартным подходом к разным макетам на ориентацию является установка портретной версии в res/layout/ и альбомной версии в res/layout-land/, под тем же именем (например, appwidget.xml). Затем просто обратитесь к нему по имени (например, R.layout.appwidget), и Android выберет файл в зависимости от ориентации. Это определенно работает для действий, поэтому я бы предположил, что это работает для виджетов приложений, но я не думаю, что я действительно пробовал его.
Ответ 2
Чтобы изменить ширину и высоту виджета приложения, определите два разных размера android:layout_height и android:layout_width для вашего макета (в res/layout-port и res/layout-land). Затем определите ширину и высоту больше в appwidgetinfo.xml. Таким образом, виджет приложения изменяет размер при изменении ориентации, а не только при добавлении виджета на рабочий экран.
Ответ 3
Если вы используете RemoteViews для динамического обновления виджета, вы можете предоставить два отдельных элемента RemoteView для вызова функции updateAppWidget. Например: