■ はじめに
以下のサイトのように、ユーザアクションに対して、 動的に切り替える画面を作りたくて調べていたら include タグってのがあったので、使ってみた。
https://banatech.net/blog/view/30
■ 手順
1)[app]-[res]-[layout] を右クリックし、 [New]-[Layout Resource File] を選択し 切り替えたい画面部品を作成する (今回は「select_week.xml」とする) 2)1)の切り替えたい画面部品を実装する (以下、サンプルの「select_week.xml」を参照) 3)対象画面Activityに対して、 Palette の [Containers]-[<include>] を選択すると、 対象の画面部品を選択するダイアログに移行するので、 1)で追加した画面部品を選択する 4)切り替えるコンポーネントの追加し (今回はCheckbox「repeatCheckBox」) 画面レイアウトを整える 5)切り替えるための画面Activityの実装をする (以下、サンプルの「MainActivity.kt」を参照)
補足:表示切替(Visibility)
# | Visibility Type | 説明 |
---|---|---|
1 | visibility = View.VISIBLE | 表示 |
2 | visibility = View.INVISIBLE | 非表示(要素は消えない。透明) |
3 | visibility = View.GONE | 非表示(要素ごとは消える) |
■ サンプル
* 上記「■ 手順」に従って実装する * 完成イメージは、以下のサイトみたいな感じ。
https://banatech.net/blog/view/30
select_week.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/selectWeek" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 「@drawable/round_button」については、以下の関連記事を参照のこと。 https://dk521123.hatenablog.com/entry/2020/08/08/000000 --> <Button android:id="@+id/sundayButton" android:layout_width="40dp" android:layout_height="40dp" android:layout_marginTop="8dp" android:background="@drawable/round_button" android:text="SUN" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> ・・・略(あまり本質ではないので) </androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
import android.os.Bundle import android.view.View import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) this.switchVisibilityOfWeek() // Click Events repeatCheckBox.setOnClickListener { this.switchVisibilityOfWeek() } } private fun switchVisibilityOfWeek() { if (repeatCheckBox.isChecked) { include.visibility = View.VISIBLE } else { include.visibility = View.GONE } } }
参考文献
https://qiita.com/sussan0416/items/531b77be1676a30b8fab
関連記事
画面コンポーネント / Button
https://dk521123.hatenablog.com/entry/2020/08/08/000000
アラーム機能 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/08/06/000000