MODEスマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。2ではSnackbarとCoordinatorLayoutについて調べたことを、それぞれ書きました。今回は、TabLayoutについて書いていきます。TabLayoutの概要リファレンスを確認すると、TabLayoutクラスはHorizontalScrollViewクラスを継承していました。20まで使われていたActionBar.Tabなどとは、関連がないようです。Tabの生成にはTabLayout.TabクラスのnewTab()メソッドを使います。MaterialDesignにおけるTabの使い方は、デザインガイドラインで細かく指定されています。このクラスの見た目や振る舞いは、ガイドラインに沿った形で実装されているようです。基本的な使い方とりあえずTabを画面に配置するために、各Tabのコンテンツは一旦無視して、以下のように実装してみました。}}やっていることは、newTab()メソッドでタブを生成してsetText()メソッドでタブのタイトルを設定しているだけですが、デフォルトでも以下のような点が実現出来てました。タブのタイトルが自動でAllCapsタブのインジケーターがアニメーションするカレントでないタブのタイトル色が薄くなるまたsetIcon()メソッドでアイコンをタブに表示することも出来ます。アイコンサイズは24dpです。textとは異なってしまいました。この場合は、setCustomView()メソッドでガイドラインに沿うよう、補うしかなさそうです。ModeとGravityガイドラインを見ると、Tabには以下のような2つのModeと2種類の見た目について、記述されています。FillそれぞれsetTabMode()メソッドとsetTabGravity()メソッドで指定出来ました。CenterViewPagerとの併用リファレンスにも書かれているように、TabLayoutクラスはViewPagerと併用するためのインターフェースやメソッドが用意されています。個人的には、これがTabLayoutクラスを使う醍醐味だと感じました。セットする方法は2パターン用意されていて、簡単に言うとマニュアル方式とオートマチック方式です。マニュアル方式だと、以下の3ステップで設定します。TabLayout#setTabsFromPagerAdapter(PagerAdapter)メソッドでPagerAdapterをTabLayoutにセットするTabLayout.TabLayoutOnPageChangeListenerインターフェースでTabの切り替えイベントをViewPagerにリンクするTabLayout.ViewPagerOnTabSelectedListenerインターフェースでViewPagerの切り替えイベントをTabLayoutにリンクするオートマチック方式では、上記3ステップと同等の処理を1つのメソッド(TabLayout#setupWithViewPager(ViewPager))の内部で、全てやってくれるそうです。ちなみにどちらの方式も、タブタイトルは内部でPagerAdapter#getPageTitle(int)メソッドから取ってきたものを、セットするとのことです。これらを踏まえてコードで書くと、以下のようになりました。}}もしタブタイトルにアイコンを設定したい場合は、getPageTitle()でnullなどを返してTabLayoutにViewPagerをセットした後で、setIcon()を使えば良さそうです。先程のコードを、以下のように書き換えました。以下のようにブランドカラーを設定する場合は、ほぼToolbarと同じ設定の仕方でした。DarkかLiteかは親のテーマを引き継ぎますし、背景色はandroid:background=?attr/colorPrimaryの記述が必要です。インジケーターには特に何も指定しなくてもcolorAccentが適用されるようです。int)メソッドを使って変更出来ます。/&gt;&lt;/RelativeLayout&gt;まとめTabLayoutいいクラスですね。タブの実装が、かなり楽になりそうだなと思いました。ViewPagerと使うことを十分に考慮してあるのが、とても助かります。タブタイトルを自動でgetPageTitle()からセット出来たりするとこまでやってくれるのであれば、いっそTabPagerViewクラスとか作ってしまってsetTabEnable(boolean)メソッドとかでタブが生えたり消えたり出来たら良かったなーとも思いました。いえ、ほとんど場合は今まで通りViewPagerを生成して、TabLayout#setupWithViewPager(PagerAdapter)を呼べば済みそうなので、本当に便利なクラスだと思います。月別アーカイブプロフィールid:androhi株式会社Zaimという会社でAndroidアプリの開発してます。技術的なことへの感想とか思ったことを書いてます。Blog|ブログを報告する。