こんにちは。zuka(@beginaid)です。
本記事ではAndroidのアプリ開発で自分が引っかかったポイントについて解説していきます。
実現したいこと
layoutディレクトリを複数のディレクトリに整理して管理しやすくしたい。
Before
After
実行環境
- Kotlin:1.5.31
- Android Studio:2020.3.1
- OS:Mac(Big Sur 11.4)
手順
layoutの階層化はProjectビューでないと反映されません。Androidビューでの作業に慣れている方はぜひこの機会にProjectビューに親しみましょう。Androidビューよりもディレクトリの構造を忠実に反映します。
res
ディレクトリを右クリックして「New > Directory」を選択後,「layouts」を入力する。
「layout」としてはいけません。後ほどlayoutというディレクトリを作成します。
STEP1で作成したlayouts
ディレクトリを右クリックして「New > Directory」を選択後,お好きなディレクトリ名を入力する。いくつ作成しても大丈夫。例えば「activity」など。
STEP2で作成した管理したい各ディレクトリを右クリックして「New > Directory」を選択後,「layout」を入力する。
STEP3で作成したlayoutディレクトリ直下にディレクトリ分けする前のファイルを移動する。
app直下のbuild.gradle
でres.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 ...
といったようなエラーが出てきます。
コメント