У меня проблема с отображением макета, когда я поворачиваю экран от пейзажа к портрету, наоборот.Как изменить макет после изменения ориентации (без перезагрузки приложения)
Я создал макет земли (layout-sw720dp-land/example.xml) и порт (layout-sw720dp-port/example.xml).
Пока все не будет правильно.
В порту макета, я дал точные размеры и расположение земли другие точные размеры ...
Раньше у меня была проблема с переключателем двух макетов.
Переход от горизонтального к вертикальному расположению прошел успешно, но активность была разрушена и перестроена.
Я решил проблему путем вставки в AndroidManifest.xml этот код:
android:configChanges="orientation|screenSize"
Теперь проблема заключается в том, что переход от горизонтального до вертикального не является автоматическим. Например, я открываю приложение по горизонтали, и приложение отображает правильный макет (layout-sw720dp-land/example.xml, потому что я использую планшет), но как только приложение открывается, и я поворачиваю планшет вертикально, вертикальная компоновка не отображается, но остается в горизонтальной версии .. (например, в горизонтальном макете у меня есть кнопка, что ее текст «Старт», а в вертикальном - у меня есть ту же кнопку, что и его текст «Готово», и когда приложение открыто и Я поворачиваю планшет от горизонтального до вертикального поворота макета, заставляя меня видеть, однако, горизонтальную версию, поэтому с кнопкой «Пуск»).
Как я могу сделать, чтобы показать правильный макет БЕЗ воссоздания и уничтожения активности?
NB: Используя фрагмент ... Короче говоря, у меня есть файл activity_main.xml, что ссылки на деятельность «MainActivity.java», что внутри у него есть этот код:
<FrameLayout
android:layout_below="@+id/toolbar"
android:id="@+id/fragment_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:foreground="@drawable/shadow_toolbar"/>
внутри этого FrameLayout I просматривать две раскладки таким образом:
FragmentExample fragment = new FragmentExample();
android.support.v4.app.FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();
в FragmentExample.java есть два знаменитых расположение:
public class FragmentExample extends Fragment {
public FragmentExample() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.example, container, false);
// Inflate the layout for this fragment
return rootView;
}
}
Как это сделать, чтобы автоматически переключаться между двумя макетами, не закрывая и не открывая приложение и не создавая его без?
Извините за мой английский =)
переопределить метод onConfigChanges и делать все, что вы хотите –
Обратите внимание, что это может звучать намного проще, чем есть на самом деле, особенно в зависимости от уровня сложности в отношении вашего макета. Не то, чтобы это действительно «полезно», но оно стоит взвешивать, если оно того стоит. – zgc7009
вы можете разместить небольшой пример для двух макетов с помощью этого метода? пожалуйста =) –