Android 仅带有图标的设计支持库选项卡

Android 仅带有图标的设计支持库选项卡,android,tabs,android-tablayout,Android,Tabs,Android Tablayout,我正在使用设计支持库创建选项卡。默认情况下,它创建带有文本的选项卡。如何创建只有图标的选项卡? 我还想改变图标的颜色,如果它是当前选定的标签。 据我所知,没有直接的方法。但是通过查看文档,我注意到您可以使用 所以也许你会这样做: for (int i = 0; i < mTabLayout.getTabCount(); i++) { mTabLayout.getTabAt(i).setIcon(R.drawable.icon); } for (int i = 0; i < m

我正在使用设计支持库创建选项卡。默认情况下,它创建带有文本的选项卡。如何创建只有图标的选项卡? 我还想改变图标的颜色,如果它是当前选定的标签。


据我所知,没有直接的方法。但是通过查看文档,我注意到您可以使用

所以也许你会这样做:

for (int i = 0; i < mTabLayout.getTabCount(); i++) {
  mTabLayout.getTabAt(i).setIcon(R.drawable.icon);
}
for (int i = 0; i < mTabLayout.getTabCount(); i++) {
  View v = inflater.inflate(view, parent, false);
  ((ImageView) v).setImageResource(R.drawable.icon);
  mTabLayout.getTabAt(i).setCustomView(v);
}

您可以在“查看寻呼机适配器”中返回空标题,或者如果需要重新使用适配器,只需按照如下所示将标题设置为空即可:

 for (int i = 0; i < mTabLayout.getTabCount(); i++) {
                    TabLayout.Tab tab = mTabLayout.getTabAt(i);
                    tab.setIcon(R.drawable.icon);
                    tab.setText("");
                }
for(int i=0;i
您可以通过使用SpannableString并向其添加ImageSpan来获得“仅图标”效果。请参阅:

使用此选项填充viewPager:

public class SectionPagerAdapter extends FragmentPagerAdapter {

    public SectionPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return mFragmentA;
            case 1:
                return mFragmentB;
            case 2:
                return mFragmentC;
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return 3;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return ""; // This removes the title, as you wish
    }
}
然后在onCreateView中执行以下操作:

final TabLayout tabLayout = (TabLayout) v.findViewById(R.id.tab_layout);
final ViewPager viewPager = (ViewPager) v.findViewById(R.id.view_pager);

viewPager.setAdapter(new SectionPagerAdapter(getActivity().getSupportFragmentManager()));
tabLayout.setupWithViewPager(viewPager);
也便于了解:

for (int i = 0; i < tabLayout.getTabCount(); i++) {
    int iconId = -1;
    switch (i) {
        case 0:
            iconId = R.drawable.icon1;
            break;
        case 1:
            iconId = R.drawable.icon2;
            break;
        case 2:
            iconId = R.drawable.icon3;
            break;
    }
    tabLayout.getTabAt(i).setIcon(iconId);
}

// Needed since support libraries version 23.0.0 
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    }

    @Override
    public void onPageSelected(int position) {
       tabLayout.getTabAt(position).select();
    }

    @Override
    public void onPageScrollStateChanged(int state) {
    }

});

tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        super.onTabSelected(tab);
    }
});
for(int i=0;i
要更改选定选项卡的颜色,请执行以下操作:

   tabLayout.setSelectedTabIndicatorColor(colorId); // For the line
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        for (int i = 0; i < tabLayout.getTabCount(); i++) {
            tabLayout.getTabAt(i).getIcon().setTint(getResources().getColor(R.color.gray));
        }
        tabLayout.getTabAt(selectedTabPosition).getIcon().setTint(colorId);
    }
tabLayout.setSelectedTabidIndicator颜色(colorId);//排队
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.LOLLIPOP){
for(int i=0;i
我尝试设置图标,但标题仍然可见。view pager adapter的getPageTitle方法正在选项卡中显示标题。在view pager adapter适配器中未设置任何标题后如何?也许,此答案将有帮助:如何仅更改单个选项卡的背景颜色,如TableLayout。SetSelectedTabidIndicator颜色(colorId);这会改变条形图的颜色。从何处可以获取selectedTabPosition值?@MuneerahRashed您可以从TableLayout获取它,类似于
TableLayout.getSelectedTabPosition()