You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio 3.2 Canary版本布局子文件夹无法显示求助

Android Studio 3.2 Canary中布局子文件夹无法显示的问题分析

我刚用2018年Google I/O大会发布的Android Studio 3.2 Canary最新版本创建了项目,为了规整布局文件,将它们放在src/main/res/layout/下的activities、fragments、listitem子文件夹中,同时在Gradle里配置了如下sourceSets:

sourceSets { 
    main { 
        res.srcDirs = [ 
            'src/main/res/layout/activities', 
            'src/main/res/layout/fragments', 
            'src/main/res/layout/listitem', 
            'src/main/res/layout', 
            'src/main/res' 
        ] 
    } 
}

但目前遇到的问题是:无论是在Project视图,还是Android视图的Project标签中,都看不到这些布局子文件夹。我已附上相关截图(Project视图截图、Android视图截图、Android视图面包屑截图),想请教这是Android Studio的Bug,还是相关配置属性发生了变更?


首先可以明确:这不是Bug,而是Android Studio资源视图的设计逻辑导致的,同时你的Gradle配置也有可优化的地方。

问题原因拆解

  1. Android Studio视图的资源聚合逻辑
    Android Studio的Android视图(包括其下的Project标签)是按照Android标准资源结构展示的,它会自动把所有布局文件合并到Layout节点下展示,不管这些文件实际存储在磁盘的子文件夹中。而默认的Project视图如果是"Android"模式,也会遵循这个聚合逻辑;只有切换到"Project Files"模式,才能看到磁盘上真实的文件夹层级。

  2. Gradle配置的顺序问题
    你当前的res.srcDirs配置顺序存在隐患,应该把最基础的src/main/res放在最前面,再依次添加子文件夹,避免资源优先级错乱。调整后的正确配置如下:

sourceSets { 
    main { 
        res.srcDirs = [ 
            'src/main/res',
            'src/main/res/layout', 
            'src/main/res/layout/activities', 
            'src/main/res/layout/fragments', 
            'src/main/res/layout/listitem'
        ] 
    } 
}

不过要注意:即使配置正确,Android Studio的Android视图依然不会显示这些子文件夹,它只会聚合展示所有布局文件。

查看真实子文件夹结构的方法

如果想确认这些子文件夹确实存在且布局文件都在其中,可以通过以下方式:

  • 在Project视图的模式下拉菜单中选择Project Files,就能看到磁盘上真实的文件夹层级。
  • 直接打开项目所在的本地磁盘目录,查看实际的文件结构。

额外说明

其实Android官方并不推荐在layout文件夹下创建子文件夹,因为编译时资源系统会将所有布局文件扁平化处理,子文件夹不会影响编译结果,仅用于本地文件管理。Android Studio的视图设计正是基于这个逻辑,所以才会合并展示布局文件。

内容的提问来源于stack exchange,提问作者Wasim K. Memon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:54:55