【Android】layoutをディレクトリ分けしたい

zuka

こんにちは。zuka(@beginaid)です。

本記事ではAndroidのアプリ開発で自分が引っかかったポイントについて解説していきます。

目次

実現したいこと

layoutディレクトリを複数のディレクトリに整理して管理しやすくしたい。

Before

After

実行環境

  • Kotlin:1.5.31
  • Android Studio:2020.3.1
  • OS:Mac(Big Sur 11.4)

手順

STEP
AndroidビューからProjectビューに切り替える

layoutの階層化はProjectビューでないと反映されません。Androidビューでの作業に慣れている方はぜひこの機会にProjectビューに親しみましょう。Androidビューよりもディレクトリの構造を忠実に反映します。

STEP
resディレクトリ直下に「layouts」ディレクトリを作成する

resディレクトリを右クリックして「New > Directory」を選択後,「layouts」を入力する。

「layout」としてはいけません。後ほどlayoutというディレクトリを作成します。

STEP
layoutsディレクトリ直下に自分の管理したいディレクトリを作成する

STEP1で作成したlayoutsディレクトリを右クリックして「New > Directory」を選択後,お好きなディレクトリ名を入力する。いくつ作成しても大丈夫。例えば「activity」など。

STEP
管理するディレクトリ直下にlayoutディレクトリを作成する

STEP2で作成した管理したい各ディレクトリを右クリックして「New > Directory」を選択後,「layout」を入力する。

STEP
既存ファイルの移動

STEP3で作成したlayoutディレクトリ直下にディレクトリ分けする前のファイルを移動する。

STEP
build.gradleでlayoutディレクトリの構成を更新する

app直下のbuild.gradleres.srcDirsを更新します。

res.srcDirsは以下のようになります。build.gradleを変更した後は「sync now」をクリックして同期しましょう。

android {
...
(中略)
...
    sourceSets {
        main {
            res.srcDirs(
                    'src/main/res',
                    'src/main/res/layouts',
                    'src/main/res/layouts/activity',
                    ...(設定したディレクトリをここで登録します)
            )
        }
    }
}

ポイント

自分が引っかかったポイントは「layoutsディレクトリの中にlayoutディレクトリを作成する」という部分です。STEP3に該当します。ここを抜かしてlayouts > activity > activity_main.xmlのようにディレクトリを作ってしまうとうまく反映されないようです。詳しく調べていないので断言はできないのですが,おそらく「layoutファイルはlayoutディレクトリの下にある」という決まりがあるのでしょう。

もしlayoutディレクトリを作成しないと,

URI Is Not Registered (Settings | Languages & Frameworks | Schemas And Dtds)

Element … must be declared …

といったようなエラーが出てきます。

よかったらシェアしてね!

コメント

コメントする

目次
閉じる