自定义选项卡布局

时间:2016-10-11 10:12:47

标签: android user-interface android-viewpager android-tablayout

Tab布局用于在android中创建滑动视图,但我想知道如何自定义它。我想显示一个盒装指示器而不是正常的底部指示器,并将默认值放在中间,只允许更改背景。像这样的东西

Something like this

我看过几个教程和github项目,允许我自定义按钮,但不能自定义指示器。

android是否允许这样做本机或者是否有任何github repos可以帮助我?

1 个答案:

答案 0 :(得分:0)

这就是我如何将标签自定义为我自己的风格..我迭代每个标签并产生任何效果,例如:选择时缩放或选取效果..你可以看看这个Custom TabLayout

ViewGroup vg = (ViewGroup) tabs.getChildAt(0);
    int tabsCount = vg.getChildCount();
    for (int j = 0; j < tabsCount; j++) {
        View view = vg.getChildAt(j);
        //change drawable for each tabs
        view.setBackgroundResource(R.drawable.backgroundtabs);

        //if you want to diff drawable for each tabs for example tabs is 4
        //if j == 0    view.setBackgroundResource(R.drawable.backgroundtabs1);  
        //if j == 1    view.setBackgroundResource(R.drawable.backgroundtabs2);
        //if j == 2    view.setBackgroundResource(R.drawable.backgroundtabs3);
        //if j == 3    view.setBackgroundResource(R.drawable.backgroundtabs4);

        ViewGroup vgTab = (ViewGroup) view;
        int tabChildsCount = vgTab.getChildCount();
        for (int i = 0; i < tabChildsCount; i++) {
            View tabViewChild = vgTab.getChildAt(i);

            // Get TextView Element
            if (tabViewChild instanceof TextView) {
              // change font
              ((TextView) tabViewChild).setTypeface(tf);
              // change color
              ((TextView) tabViewChild).setTextColor(getResources().getColor(R.color.white));
              // change size
              ((TextView) tabViewChild).setTextSize(18);
              // change padding
              tabViewChild.setPadding(0, 0, 0, 0);
              //..... etc...
            }
        }
    }