2015年09月20日

androidでActionBar.TabをTabLayoutに書き換え

blogramランキング参加中!

作ればわかる!Androidプログラミング 第3版 SDK5/Android Studio対応 (Smart Mobile Developer)

新品価格
¥2,894から
(2015/9/20 22:11時点)



ActionBar.Tabがdeprecatedなので移行しようと思った。
最近デザインライブラリーが出たので
こいつのTabLayoutに書き換えた

以下、やり方

・actionbarのtabはdeprecatedなのでやめる
//actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


・tablayoutの設定
gradleに以下追加
compile 'com.android.support:design:22.2.0'

xmlに以下追加。
これからは全部レイアウトでやるってことや
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:background="@color/gray"
app:tabTextColor="@color/lightGray"
app:tabSelectedTextColor="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content" />


・viewpagerとの連携
mTabLayout = (TabLayout)findViewById(R.id.tab_layout);
mTabLayout.setupWithViewPager(mViewPager);


・viewpagerとの連携でのタイトル
FragmentPagerAdapterに
getPageTitle
をoverwriteして表示させる


・viewpagerとの連携でアイコンの表示
タイトルは上の方法で表示
アイコンはその後以下で表示。
これでうまくいく
mTabLayout.getTabAt(0).setIcon(android.R.drawable.ic_menu_agenda);


・viewpagerとの連携でのタイトルでハマる点
以下で実装すると、
なぜかデフォルトのハイライトが効かない
という糞仕様にハマるので注意
mTabLayout.getTabAt(0).setText(R.string.test)
.setIcon(android.R.drawable.ic_menu_agenda);


・クリックリスナー
setTabListenerをやめて
mTabLayout.setOnTabSelectedListener
にする。
tabごとにクリックつけるんじゃなくて
tablayout一個につける仕様になった


・タブモード
タブモードは複数あるので好きなの選ぼう
スクロールにしたければこれ
mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);


・現在表示されてるタブの取得
actionBar.getSelectedTab().getPosition()
でなく
mViewPager.getCurrentItem()
にする。viewpagerで取る


・タブの選択
actionBar.setSelectedNavigationItem(num);
でなく
mTabLayout.getTabAt(num).select();
にする


案外移行は簡単でした。
デザインライブラリーに寄せて行って
イケメンなアプリにしてこうと思います
続く
タグ:android
posted by マスタカ at 22:14 | Comment(0) | TrackBack(0) | プログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/426424400
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック