2010-12-31 2 views
28

У меня довольно сложное приложение для Android, содержимое папки «layout» становится все более крупным. Я попытался организовать отдельные макеты xml-файлов в подпапках, например. макет/кнопки /, макет/активность /, макет/представления/т. д. Это, похоже, не работает, содержимое папок не анализируется в классе R.Android Организуйте макеты в подпапки

Есть ли способ сделать это?

Спасибо!

+1

Возможный дубликат [Может папка Android Layout содержит вложенные папки?] (Http://stackoverflow.com/questions/4930398/can-the-android-layout -папка-содержащий-подпапки) –

ответ

22

Я не думаю, что вы сможете это сделать. Я считаю, что он поддерживает только определенные имена папок, такие как layout-large, layout-mdpi, layout-hdpi, layout-fr и т. Д. Вы можете использовать более одного из этих модификаций, а также layout-fr-hdpi-large.

На этой странице отображаются все допустимые модификаторы

http://developer.android.com/guide/topics/resources/providing-resources.html

+2

Он говорит о подпапках, например 'layout-hdpi/buttons/mybutton.xml', а не сами папки ресурсов. – KingCrunch

+3

Тем не менее, это не поддерживается. Хотелось бы, чтобы вы тоже это сделали. С пользовательским пользовательским интерфейсом вы можете получить много макетов и доступных ресурсов в одной папке. Надеюсь, они добавят это в будущую версию SDK> – kcoppock

+4

Отмечено как ответ, как это технически правильно, в настоящее время это невозможно. Я изучаю альтернативу, такую ​​как упаковка моих взглядов в отдельные проекты. – longhairedsi

17

Другой вариант заключается в использовании префикса для различных точек зрения. Не так приятно, как иметь другую папку, но она может ввести какой-то порядок.

9

Теперь с Android Studio и Gradle вы можете иметь несколько папок ресурсов в своем проекте. Позволяет организовать не только ваши файлы макета, но и любые ресурсы.

Это не совсем подпапка, но может разделять части вашего приложения.

Конфигурация такова:

sourceSets { 
    main { 
     res.srcDirs = ['src/main/res', 'src/main/res2'] 
    } 
} 

Проверьте documentation.

+1

имя файла будет конфликтовать. – Gohan

+0

привет, я попробовал ваше решение, но при запуске сборки он говорит: «Не удалось найти свойство« res »в исходном наборе« main ». – Apperside

+0

Неужели вы пытаетесь добавить sourceSets, чтобы изолировать блок android {...}? –