TabLayout not filling width when tabMode set to 'scrollable'

前端 未结 17 762
傲寒
傲寒 2020-12-02 16:58

I have added TabLayout (from support library v22.2.1) to my Fragment as:



        
17条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-02 17:16

    This is my solution with tabMode set to: app:tabMode="scrollable"

    class MyTabLayout(
      context: Context,
      attrs: AttributeSet?
    ) : TabLayout(context, attrs) {
    
      override fun onMeasure(
        widthMeasureSpec: Int,
        heightMeasureSpec: Int
      ) {
    
        val equalTabWidth= (MeasureSpec.getSize(widthMeasureSpec) / tabCount.toFloat()).toInt()
    
        for (index in 0..tabCount) {
          val tab = getTabAt(index)
          val tabMeasuredWidth = tab?.view?.measuredWidth ?: equalTabWidth
    
          if (tabMeasuredWidth < equalTabWidth) {
            tab?.view?.minimumWidth = equalTabWidth
          }
        }
    
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
      }
    }
    

提交回复
热议问题