TabLayoutにアイコンを設定する
androidのTabLayoutは文字だけでなく、画像も設定できる。画像の設定方法にはいくつか方法がある。とりあえず分かるものだけ覚書。
setIconで設定
多分いちばん楽な方法。でもデフォルトでいい感じにアイコンの見た目のレイアウトまで行ってくれるので、大抵はこれで十分な気もする。
TabLayout tab = (TabLayout)findViewById(R.id.tab);
tab.getTabAt(0).setIcon(R.drawable.icon);
ImageSpanを使う
PagerAdapterのgetPageTitleメソッドを上書きとかする。多分しなくてもいいと思うけど。なんにしてもSpannableStringにImageSpanというオブジェクトを入れ込めばアイコンも一緒に追加できるっぽい。setIconだけじゃ物足りない時につかうといい。
private int[] imageResId = { R.drawable.ic_one, R.drawable.ic_two, R.drawable.ic_three }; @Override public CharSequence getPageTitle(int position) { Drawable image = ContextCompat.getDrawable(context, imageResId[position]); image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight()); SpannableString sb = new SpannableString(" "); ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM); sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return sb; }
参考:
Google Play Style Tabs using TabLayout | CodePath Android Cliffnotes
customViewを自分で設定
正直spannebleStringとか使うのはかったるいし、そこまでいじるならlayoutを自分で作ってそれをinflateしたほうが速い気がするので、こっちのほうが好み。
TabLayout tab = (TabLayout)findViewById(R.id.tab);
tab.getTabAt(0).setCustomView(R.layout.custom_view);