Мое приложение отлично выглядит в портретном режиме, но оно растягивается в ландшафте и выглядит плохо. Я знаю, что могу сделать отдельный макет для пейзажа, но я бы предпочел просто установить максимальную ширину моего корневого элемента, чтобы ландшафтный режим просто приводил к некоторому белому пространству по сторонам. Есть ли способ сделать это?Как установить максимальную ширину на LinearLayout, чтобы она не растягивалась в ландшафтном режиме?
Q
Как установить максимальную ширину на LinearLayout, чтобы она не растягивалась в ландшафтном режиме?
3
A
ответ
1
Самое быстрое решение, о котором я могу думать, это установить правое и левое поля, сохраненные в отдельных файлах dimen.xml для портретной и альбомной ориентации.
4
Сохранение различных файлов макетов - это правильное решение, но это добавляет сложности вашему проекту (вам нужно будет поддерживать несколько файлов, если дизайнер перепроектирует макет представления).
Если вам нужно изменить ширину LinearLayout, вы можете сделать следующее. Держите один файл XML в папке макета и дать ему значение
<LinearLayout
style="@style/width_match_parent_max_200"
android:layout_height="wrap_content">
затем, в вашей ценности-600dp/styles.xml пишут:
<resources>
<style name="width_match_parent_max_200">
<item name="android:layout_width">200dp</item>
</style>
</resources>
и в вашей ценности/styles.xml:
<resources>
<style name="width_match_parent_max_200">
<item name="android:layout_width">match_parent</item>
</style>
0
The BoundedViews library позволяет установить boundedWidth/boundedHeight на представлениях даже layout_width = "match_parent"
Спасибо, это похоже на самое чистое решение :) Кстати, это не сработало для меня сначала из-за двух вещей: 1) вместо этого это должно быть значение-w600dp (у вас отсутствует 'w' характер) 2) Мое измерение устройства 320dp x 480dp, поэтому я изменил его на значения-w320dp с layout_width 320dp вместо этого и работает как шарм! – Bruce