ワシはワシが育てる

週刊少年ジャンプと任天堂のゲームが三度のメシより好きです。

PagerSlidingTabStripをカスタマイズする

AndroidアプリでタブのインジケータとViewPagerのスワイプを同期できるPagerSlidingTabStripをカスタマイズした時のメモ。

Githubのスター数や使用実績を見ても完成されたライブラリかと思いましたが、いくつかこちらの要件に沿わない箇所がありました。

まずexpandモードで横幅一杯にした時に文字が切れてしまう事がある問題について。
こちらのIssueで報告されている方法を使えば解決できます。

デフォルトのLayoutParamsを以下のように変更します。

new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f)
↓
new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, tabView.getMeasuredWidth())

またバグではありませんが、タブのクリックイベントをセットしたかったので、 interfaceにonTabClickListenerを追加しました。 同様の案件をforkしている方のライブラリを拝借したほうが手っ取り早いですが、変更箇所は少ないので自分でいじってもいいかもしれません。(このあたりが参考になるかと思います。)

Javaはほぼ初学の状態でいきなり先月からAndroidアプリ開発にぶっこんだのでinterfaceってなんぞやとか思っていましたが、既存のライブラリを自分でいじると勉強にもなっていいですね。