如何以编程方式将图像添加到标签布局?

时间:2017-05-17 08:16:41

标签: android android-layout tabs

我的应用中有一个标签布局,我想在某些条件发生时将图像添加到其中一个标签中。但我不知道该怎么做

以下是任何更改之前的标签布局

tab layout before any changes

以下是我想实现的条件我想要红色圆圈上的红色图像和文字视图。

tab layout after changes

目前我的标签布局代码如下所示

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
    setupTabIcons();

    private void setupTabIcons() {
     tabLayout.getTabAt(0).setIcon(tabIcons[0]);
     tabLayout.getTabAt(1).setIcon(tabIcons[1]);
     tabLayout.getTabAt(2).setIcon(tabIcons[2]);
     tabLayout.getTabAt(3).setIcon(tabIcons[3]);
    }

    private void setupViewPager(ViewPager viewPager) {
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
     adapter.addFragment(new 1stFragment(), "One");
     adapter.addFragment(new 2ndFragment(), "Two");
     adapter.addFragment(new 3rdFragment(), "Three");
     adapter.addFragment(new 4thFragment(), "Four");
     viewPager.setAdapter(adapter);
    }

   private class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return null;
    }
}

最后,我怎样才能控制标签布局,所以我可以将drawable / image添加到标签之一?有人请指出正确的方向。谢谢。

2 个答案:

答案 0 :(得分:3)

您可能需要使用自定义布局。

View v = LayoutInflater.from(this).inflate(R.layout.your_view, null);
v.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
tabLayout.getTabAt(position).setCustomView(v);

根据您的需要设计your_view.xml布局

答案 1 :(得分:-1)

也许这会有所帮助,它是支持徽章视图的自定义标签布局 https://android-arsenal.com/details/1/5418