【问题标题】:Organizing resources in Android studio在 Android Studio 中组织资源
【发布时间】:2015-08-28 14:13:04
【问题描述】:

我正在处理一个包含大量 .xml 布局文件的项目。我想将它们组织在单独的文件夹中。 资源合并似乎是正确的解决方案。
http://tools.android.com/tech-docs/new-build-system/resource-merging
我想在活动、列表视图、对话框、按钮等中拆分我的布局文件夹。

如何修改我的项目和 build.gradle 文件来完成此操作?

【问题讨论】:

标签: android android-studio


【解决方案1】:

资源合并并不是您在此处寻找的真正概念——该文档指定了如果您有多种构建类型和风格,它们如何组合以提供项目资源的单一视图,这些资源将被构建到最后结果。在您的情况下,您可能只有一个构建类型和风格,并且希望在资源中包含子目录以帮助更好地组织它们。

坏消息是,Android 对此并不友好。构建系统希望资源以严格的格式排列,所有布局都位于项目根目录下的单个文件夹中,例如,它不会让您偏离这一点。您可以做的最好的事情是拥有多个资源文件夹树,如下所示:

AppModule
  + src
    + main
      + java
      + res
        + drawable
        + layout
        + ...etc...
      + extra-res
        + drawable
        + layout
        + ...etc...

每个资源子树都有相同格式的子目录。如果它们是空的,则不需要在其中提供详尽的子目录列表;只包括那些有你需要的东西。

要完成这项工作,您需要在 build.gradle 脚本中包含以下内容:

android {
    sourceSets {
        main {
            res.srcDirs = ['src/main/res', 'src/main/extra-res']
        }
    }
}

【讨论】:

  • 感谢您提供详尽的回答。您是否认为布局资源也可以通过在布局文件夹中创建子目录来分组?例如:layout/activity/search.xml
  • 你不能那样做。资源目录的格式是固定的,你不能在“布局”之类的东西下创建任意子目录。
  • 你们是否看到任何有关更改的问题都不会反映在下一次运行中。我已经在分离的资源文件夹中创建了布局,并在设置之前使用了一些 if-else,但是 new-res/layout/ 文件中的任何新更改都不会反映在下次运行中。几乎每次我必须清理或卸载应用程序。有什么线索吗?我正在使用的 Gradle 版本3.4.1。 @ScottBarta
猜你喜欢
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
相关资源
最近更新 更多