Создание различной компоновки для телефона и планшета 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.

Ответ 4

Вот что я сделал для того же изменения атрибута "app: layoutManager" Recycler View. Поскольку вы используете список и представление сетки с использованием вида recycler, кажется, это лучший способ плавной прокрутки.

  1. Создайте папку в res "layout-sw600dp".
  2. Скопируйте файл макета в эту папку.
  3. В исходном файле макета, который находится в папке макета, установите линейный менеджер макета в качестве атрибута менеджера компоновки.

    <android.support.v7.widget.RecyclerView app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>

  4. В макете макета "layout-sw600dp" установите GridLayoutManager в качестве атрибута Recycler View.

    <android.support.v7.widget.RecyclerView app:layoutManager="android.support.v7.widget.GridLayoutManager"/>

Не забудьте изменить счетчик диапазона, потому что по умолчанию он равен 0, который будет таким же, как и вывод макета лайнера.

Ресурсы:

  1. Как установить приложение RecyclerView: layoutManager = "" из XML?

  2. https://medium.com/google-developers/building-a-responsive-ui-in-android-7dc7e4efcbb3

  3. https://developer.android.com/training/multiscreen/screensizes.html