巧妙均分TabLayout tab

    /**
     * 均分TabLayout tab
     * 利用LinearLayout weight 特性, android.support.design.widget.TabLayout#updateTabViewLayoutParams(android.widget.LinearLayout.LayoutParams)
     */
    public static void splitTabLayout(final TabLayout tabLayout) {
        if (ViewUtil.isNull(tabLayout) || tabLayout.getTabCount() < 2) {
            return;
        }
        tabLayout.setVisibility(View.INVISIBLE);
        if (tabLayout.getTabMode() != TabLayout.MODE_FIXED || tabLayout.getTabGravity() != TabLayout.GRAVITY_FILL) {
            return;
        }
        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                int tabCount = tabLayout.getTabCount();
                int measuredWidth = tabLayout.getMeasuredWidth();
                if (measuredWidth <= 0) {
                    tabLayout.setVisibility(View.VISIBLE);
                    return;
                }
                int marginOffset = measuredWidth / tabCount / 4;
                ViewGroup.LayoutParams layoutParams = tabLayout.getLayoutParams();
                if (layoutParams instanceof ViewGroup.MarginLayoutParams) {
                    ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) layoutParams;
                    marginLayoutParams.leftMargin = marginOffset;
                    marginLayoutParams.rightMargin = marginOffset;
                    tabLayout.setLayoutParams(layoutParams);
                    //Log.debug(TAG, "splitTabLayout: " + marginOffset);
                }
                tabLayout.setVisibility(View.VISIBLE);
            }
        });

    }

猜你喜欢

转载自blog.csdn.net/CSDNno/article/details/99302027
Tab