1

Есть ли способ выбрать другой формат для Android-активности, основанный на типе устройства?Android: выберите другой макет на основе выбранного устройства

Я стараюсь быть более понятным. У меня есть два макета: home_layout_phone.xml и home_layout_tablet.xml. Они равны, но объекты имеют разные пропорции, и в HomeActivity.java я хочу сделать что-то вроде этого:

setContentView(R.layout.home_layout_phone.xml); //if the device is a phone 
setContentView(R.layout.home_layout_tablet.xml); //if the device is a tablet 

Как я могу это сделать? Я использую AndroidStudio 1.5.1. Спасибо за ваши ответы и извините за мой плохой английский, я итальянец.

+0

здесь: http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters –

ответ

0

Вы можете иметь несколько макетов для нескольких конфигураций устройств, используя квалификаторы конфигурации.

Android поддерживает несколько конфигурационных классификаторов, которые позволяют вам управления, как система выбирает свои альтернативные ресурсы на основе характеристик экрана текущего устройства. Конфигурация квалификатор - это строка, которую вы можете добавить в каталог ресурсов в свой проект Android и указать конфигурацию, для которой сконфигурированы ресурсы .

Вы можете иметь что-то вроде:

  • Список раскладка товара/home_layout.xml (для телефонов)

  • элемент списка макета XLarge/home_layout.xml (для больших устройств)

http://developer.android.com/intl/es/guide/practices/screens_support.html#qualifiers

+0

Спасибо, что работает сейчас. Я был уверен, что это была простая проблема для решения, но я не мог найти ответ нигде. –

0

Используйте одно имя файла макета. Например, home_layout.xml. Это будет ваш макет телефона. Теперь, чтобы создать другую раскладку для планшета, в Android Studio щелкните правой кнопкой мыши папку макета и выберите Новый>Файл ресурсов макета. Назовите этот файл с тем же именем (home_layout) и под доступными квалификаторами выберите, как вы будете определять, что такое планшет. Например, вы можете выбрать, когда ширина превышает 600 дп. Как показано ниже:

enter image description here

Когда вы setContentView, просто:

setContentView(R.layout.home_layout); 

И собственно макет будет выбран на основе ширины устройства в этом случае.

Смежные вопросы