То, что вы хотите здесь сделать, - это использовать Resources Framework , чтобы предоставить два разных макета для каждого из ваших Фрагментов и вашей Деятельности.Один макет предназначен для портретной ориентации, а другой - для альбомной ориентации.
Структура будет выглядеть следующим образом:
res/
layout/
activity_home.xml
fragment_body.xml
fragment_menu.xml
layout-land/
activity_home.xml
fragment_body.xml
fragment_menu.xml
Вам не нужно ничего делать в коде,Просто используйте setContentView(R.layout.activity_home)
в своей Деятельности, и правильная версия (книжная или альбомная) будет автоматически выбрана для вас.
Аналогично, в ваших Фрагментах вы можете написать inflater.inflate(R.layout.fragment_body, parent, false)
, и правильная версия будет выбрана автоматически дляyou.
Теперь вам просто нужно убедиться, что ваши разные xml-файлы делают то, что вы хотите.Например, в портретной вы можете сделать так, чтобы ваши кнопки соответствовали ширине экрана:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
.../>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
.../>
Но тогда в вашем пейзаже вы можете сделать так, чтобы ваши кнопки были обернуты:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
.../>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
.../>
Покатак как вы используете те же id
s в альбомной и портретной версиях, все будет "просто работать".