Этот вопрос задавался более 100 раз в SO, например, этот вопрос задавался 8 лет назад. И наверняка методы определения в обсуждении устарели.
С новыми компонентами проектирования, такими как Constraint Layout, и изменениями в корзине, такими как MipMap и другими изменениями в методах, я хочу обсудить современные методы.
Каковы лучшие практики для создания приложения для поддержки большого количества устройств, когда речь идет конкретно о разработке. У меня более 3 лет опыта работы с Android, и все же я стремлюсь изучать новые вещи, которые вообще нигде официально не обсуждаются. Так можете ли вы сказать мне, какие правила должны соблюдаться для поддержки экрана разных размеров?
Например, я покажу вам экран, на котором все устройства должны выглядеть одинаково
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:gravity="center"
>
<TextView
android:id="@+id/lblLogo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/app_name"
android:autoSizeTextType="uniform"
android:gravity="center"
android:padding="15dp"
/>
<!-- Email Label -->
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tilLoginEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etLoginEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="Email" />
</com.google.android.material.textfield.TextInputLayout>
<!-- Password Label -->
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tilLoginPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etLoginPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="Password"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:padding="12dp"
android:text="@string/btnLogin"/>
</LinearLayout>
Это отлично смотрится на мобильных устройствах, но хуже всего на планшетах и больших экранах.
см. Рисунок ниже на экране мобильного телефона.
см. Рисунок ниже на планшетах
Вопрос: Что нужно сделать, чтобы показывать по центру красивую разметку в планшете вместо широкоформатного текста редактирования в полноэкранном режиме. Другими словами, что следует соблюдать, чтобы макет отображался одинаково на всех устройствах в соответствии с новыми методами?
Примечание: я знаю, что если мы применим некоторые свойства, мы можем ограничить ширину текста редактирования в данном примере, но мы не можемиспользуйте такие свойства в других сложных макетах.