androidでタブバー、BottomNavigationViewの使い方メモ
BottomNavigationViewを使ってタブバーを設置する手順をメモしておく
app/build.gradle
まずはサポートライブラリーを追加
dependencies { ・・・ implementation 'com.android.support:design:28.0.0' }
menu/item_bottom_navigation.xml
タブの基本的な設定を行う
アイコンは自分で用意した画像を使うように
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/tab1" android:icon="@drawable/tab2" android:title="タブ1" /> <item android:id="@+id/tab2" android:icon="@drawable/tab2" android:title="タブ2" /> </menu>
values/dimens.xml
タブの文字サイズを設定
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="design_bottom_navigation_text_size">10sp</dimen> <dimen name="design_bottom_navigation_active_text_size">10sp</dimen> </resources>
values/color.xml
タブバーの背景色を定義(colorTabBar)
タブの色も変更(colorPrimary)※今回はこれで十分だた
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#050f52</color> ・・・ <color name="colorTabBar">#f0f8ff</color> </resources>
layout/activity_main.xml
タブバー追加
タイトルを常に表示(labelVisibilityMode)
タブバーの背景色とエフェクトの無効化(itemBackground)
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> // ここにタブを選択したときのViewを配置 <android.support.design.widget.BottomNavigationView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" app:labelVisibilityMode="labeled" app:itemBackground="@color/colorTabBar" app:menu="@menu/item_bottom_navigation" /> </android.support.design.widget.CoordinatorLayout>
MainActivity.kt
タブが選択されたときに表示するfragmentセット
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) bottom_navigation.setOnNavigationItemSelectedListener { item -> val transaction = supportFragmentManager.beginTransaction() when(item.itemId) { R.id.tab1 -> { transaction.replace(R.id.frameLayout, MyFragment1()).commit() } R.id.tab1 -> { transaction.replace(R.id.frameLayout, MyFragment2()).commit() } } true } supportFragmentManager.beginTransaction().replace(R.id.frameLayout, MyFragment1()).commit() } }
以上です