Создание различной компоновки для телефона и планшета Android
Это основной андроидный вопрос. У меня есть приложение, которое должно иметь разный дизайн экрана для телефона и планшета. В телефоне должен быть ListView, а планшет должен иметь GridView элементов.
Я хочу знать, как я могу это сделать без создания двух разных приложений.
Спасибо
Ответы
Ответ 1
В принципе, вам нужно сделать разные макеты для телефона и планшетов Android. Android достаточно умен, чтобы различать. Например, для большого экрана вы можете просто создать новую папку Namer Layout-large. и поместите в него свой xml. Android выберет xml отсюда, и в случае телефона он выберет из простой папки макета.
Квалификаторы конфигурации, которые вы можете использовать для предоставления ресурсов, зависящих от размера, являются небольшими, нормальными, большими и xlarge. Например, макеты для особо большого экрана должны идти в layout-xlarge/.
Я бы порекомендовал, чтобы на обоих экранах телефона и планшета и совершенно разные вы могли сделать два разных apks и загрузить один и тот же идентификатор в google play. Таким образом, ваше приложение будет легким и будет быстрым. Google play автоматически может обнаружить, что приложение предназначено для планшетов или телефонов. Вам не нужно беспокоиться об этом.
Ответ 2
Вам в основном нужно предоставить различные файлы макета для разных квалификаторов.
В качестве очень краткого примера, файлы макетов xml, размещенные в папке layout-sw720dp
(или layout-large
для уровня API < 13), будут использоваться для устройств с шириной более 720 точек (например, 10-дюймовые планшеты).
Проверьте Поддержка нескольких экранов и Предоставление ресурсов в документации по Android.
Ответ 3
Проверьте это: http://developer.android.com/guide/practices/screens_support.html
Вам не нужно создавать два отдельных приложения.
Ответ 4
Вот что я сделал для того же изменения атрибута "app: layoutManager" Recycler View. Поскольку вы используете список и представление сетки с использованием вида recycler, кажется, это лучший способ плавной прокрутки.
- Создайте папку в res "layout-sw600dp".
- Скопируйте файл макета в эту папку.
-
В исходном файле макета, который находится в папке макета, установите линейный менеджер макета в качестве атрибута менеджера компоновки.
<android.support.v7.widget.RecyclerView app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
-
В макете макета "layout-sw600dp" установите GridLayoutManager в качестве атрибута Recycler View.
<android.support.v7.widget.RecyclerView app:layoutManager="android.support.v7.widget.GridLayoutManager"/>
Не забудьте изменить счетчик диапазона, потому что по умолчанию он равен 0, который будет таким же, как и вывод макета лайнера.
Ресурсы:
-
Как установить приложение RecyclerView: layoutManager = "" из XML?
-
https://medium.com/google-developers/building-a-responsive-ui-in-android-7dc7e4efcbb3
-
https://developer.android.com/training/multiscreen/screensizes.html