できるもの
やること
ライブラリを読込
TabLayout を追加
TabLayout で表示するレイアウトを追加
Fragment を追加
Adapter を追加
Activity から呼び出し
1. ライブラリを読込
build.gradle
implementation 'com.google.android.material:material:1.0.0'
2. TabLayout を追加
activity_tab_layout.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".TabLayoutActivity"> <androidx.viewpager.widget.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/colorAccent" app:tabTextColor="#000000" app:tabSelectedTextColor="@color/colorAccent"> <com.google.android.material.tabs.TabItem android:layout_width="wrap_content" android:layout_height="wrap_content"/> <com.google.android.material.tabs.TabItem android:layout_width="wrap_content" android:layout_height="wrap_content"/> </com.google.android.material.tabs.TabLayout> </androidx.viewpager.widget.ViewPager> </androidx.appcompat.widget.LinearLayoutCompat>
3. TabLayout で表示するレイアウトを追加
タブをタップ、スライドした時にそれぞれ表示するレイアウトを用意する。
fragment_tab_01.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <androidx.appcompat.widget.AppCompatTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:textStyle="bold" android:text="fragment_tab_01 を表示"/> </androidx.appcompat.widget.LinearLayoutCompat>
fragment_tab_02.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <androidx.appcompat.widget.AppCompatTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:textStyle="bold" android:text="fragment_tab_02 を表示"/> </androidx.appcompat.widget.LinearLayoutCompat>
4. Fragment を追加
3 で作成した xml を Fragment として生成
TabFragment.kt
class Tab01Fragment: Fragment(){ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_tab_01,container,false) } } class Tab02Fragment: Fragment(){ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_tab_02,container,false) } }
5. Adapter を追加
Pager と Fragment を紐づけ
TabAdapter.kt
class TabAdapter(fm:FragmentManager, private val context: Context): FragmentPagerAdapter(fm){ override fun getItem(position: Int): Fragment { when(position){ 0 -> { return Tab01Fragment() } else -> { return Tab02Fragment() } } } override fun getPageTitle(position: Int): CharSequence? { when(position){ 0 -> { return "tab_01" } else -> { return "tab_02" } } } override fun getCount(): Int { return 2 } }
6. Activity から呼び出し
タブを表示する Activity に追加
Pager、tab_layout はそれぞれ手順 1 で作成したレイアウトで指定した id
TabLayoutActivity.kt
class TabLayoutActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_tab_layout) pager.adapter = TabAdapter(supportFragmentManager,this) tab_layout.setupWithViewPager(pager) } }
'描く' 카테고리의 다른 글
node.js、express、ejsでHello Worldするコード (0) | 2021.07.06 |
---|---|
これだけ押さえておけばあらゆるAPIを呼び出せる! Google APIを使用するための基本 (0) | 2021.07.05 |
15分で作る?【 60秒ストップウォッチ 】 (0) | 2021.07.03 |
Node.jsで定期実行メモ (0) | 2021.07.03 |
検索サンプル一覧 (0) | 2021.07.03 |
댓글