詳細未調査ですが、こうしたら変わりましたというお話です。
まぁある意味当たり前なのかもですが、APIレベルが高い場合は全くもって問題なかったのですが
API22でネットで記載されていた方法にて、TabLayoutのテキストサイズを変更しみたのですが
何やっても変わらない><
SpannableStringでなくViewGroupからTextViewを取り出す方法など本当にいろいろ試したんですがうまくいかず、、、
最後のさいごでうまくいったのが、TabLayoutのカスタムクラスを作成した方法。
iOSほどandroidに馴染みがないのであれですが、推測としてはapp側のテーマによる制限など、別の仕組みが優先されてたのかなと勝手に解釈。
Androidマスターの方のご意見聞きたいです。
APIレベル22でも動いたのはこちら。CustomTabLayoutです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
class CustomTabLayout : TabLayout { constructor(context: Context) : super(context) { init(context, null) } constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { init(context, attrs) } constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { init(context, attrs) } private fun init(context: Context, attrs: AttributeSet?) { this.addOnTabSelectedListener(object: OnTabSelectedListener { private val normal = AbsoluteSizeSpan(context.resources.getInteger(R.integer.tab_font_small), true) private val large = AbsoluteSizeSpan(context.resources.getInteger(R.integer.tab_font_large), true) override fun onTabSelected(tab: TabLayout.Tab) { tab?.also { it.text?.also { text -> val spanText = if(text is SpannableString) text else SpannableString(text) spanText.removeSpan(normal) spanText.setSpan( large, 0, text.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ) it.text = spanText } } } override fun onTabUnselected(tab: Tab) { tab?.also { it.text?.also { text -> val spanText = if (text is SpannableString) text else SpannableString(text) spanText.removeSpan(large) spanText.setSpan( normal, 0, text.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ) it.text = spanText } } } override fun onTabReselected(tab: Tab) {} }) } } |