0

Как изменить макет с изменением ориентации, как это делает приложение youtube? Кажется, что RecyclerView изменяет макет элемента в ландшафтном режиме, как это можно сделать (я считаю, что состояние фрагмента сохраняется, поэтому оно не просто сохраняет состояние с данными, последнее положение и так далее, а затем загружает пейзаж файлы макета) Какова наилучшая практика?android Как изменить макет при изменении ориентации с сохранением состояния, как приложение YouTube?

Портрет: enter image description here

Пейзаж: enter image description here

+1

Проверьте это https://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en. В нем объясняется, как использовать сохраненный экземпляр для воссоздания представлений. –

+0

Спасибо @CedricFranck, это очень искусно, но все же как изменить макет, как это делает приложение YouTube? –

+0

Вам нужно создать два XML. Один для портрета, другой для пейзажа. Когда вы меняете ориентацию из «Портрет» в «Пейзаж», просто сохраняйте все ваши представления, находящиеся внутри сохраненного экземпляра, а затем при создании действия с ландшафтным видом вы можете вернуть данные тезисов и убрать ваши представления. –

ответ

2

Вы можете добавить

android:configChanges="orientation|screenSize" 

к вашей деятельности в манифесте. Поэтому изменение ориентации не приведет к перезагрузке вашей активности.

+1

true, но он не изменит файлы макета, Как я получил его на работу, это поместить все данные, которые я уже загружаю в сохраненное состояние экземпляра (таким образом, мне не нужно будет звонить в сеть и так далее) а затем в папке layouts, layout-land я помещаю те же ресурсы компоновки, но с разной структурой представления, таким образом, она будет загружаться автоматически с помощью ландшафтного макета. Возможно, будет выполнен другой способ, используя [ConstraintLayout] (https://developer.android.com/training/constraint-layout/index.html). Я попытаюсь его исследовать, и если результат достигнут, я отправлю его здесь –