#android #android-layout #widget #orientation #tablet
#Android #android-макет #виджет #ориентация #планшет
Вопрос:
Я хочу, чтобы мой виджет сохранял одинаковое соотношение сторон после поворота в планшетах
В моем манифесте я вызываю макет в приемнике:
android:name="android.appwidget.provider"
android:configChanges="orientation"
android:resource="@layout/mywidget"
Я создаю две папки в res: layout-land и layout-port и помещаю в них один и тот же файл «mywidget.xml » но при разных значениях (строки и столбцы) в трее достигается одинаковое соотношение сторон:
Для ландшафта:
<appwidget-provider
android:minWidth="250dip"
android:minHeight="460dip">
</appwidget-provider>
Для портрета:
<appwidget-provider
android:minWidth="320dip"
android:minHeight="390dip">
</appwidget-provider>
Но пейзаж не работает. Я могу указать любое значение и отметить, что происходит. Только для изменения значений эффекта в портретном файле. Но невозможно получить такое же соотношение сторон.
Помогите найти решение.
Комментарии:
1. AFAIK, решение о соотношении сторон зависит от главного экрана, а не от вас. Ваши ширины и высоты преобразуются в определенное количество ячеек, и эти ячейки не обязательно должны быть квадратными или иным образом согласовываться между ориентациями.
2. Я понимаю. Но разве невозможно компенсировать это преобразование, например, добавив больше вертикальных ячеек (в значении dip)? Примечание: мой виджет вертикальный, и я хочу поддерживать его вертикально в альбомной ориентации.
3. Ненадежно. Во-первых, ячейки должны быть большими (например, мой домашний экран имеет сетку ячеек размером 5×6). Во-вторых, ячейки не обязательно должны быть квадратными. В целом, поведение домашних экранов, когда дело доходит до ориентации, зависит от домашнего экрана. Некоторые могут не перезагружать метаданные виджета из-за изменения ориентации. Обратите внимание, что
<appwidget-provider>
элементы входят вres/xml/
и связанные каталоги, а неres/layout/
.