如何设置像Facebook应用程序的选项卡图标效果?

时间:2017-06-26 08:09:11

标签: android

我的标签布局有三个图标A B C,我希望用户点击标签A,当用户点击标签B时,它会改变颜色标签A将更改为原始文件。

我的问题是我不能让标签图标变为原始图标,当它变为黄色时,它将始终为黄色,我该如何解决这个问题?提前谢谢。

public class HomeTabs extends Fragment {

    private Context context;

    private TabLayout tabLayout;
    // Here is my three icons
    private int[] imageResId = {R.drawable.contract,
            R.drawable.table,
            R.drawable.line_graph};

    public HomeTabs() {
        // Required empty public constructor
    }

    public static HomeTabs newInstance(){return new HomeTabs();}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home_tabs, container, false);

        tabLayout = (TabLayout)view.findViewById(R.id.tabLayout);
        tabLayout.addTab(tabLayout.newTab().setText(getResources().getString(R.string.tab1)));
        tabLayout.addTab(tabLayout.newTab().setText(getResources().getString(R.string.tab2)));
        tabLayout.addTab(tabLayout.newTab().setText(getResources().getString(R.string.tab3)));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

        final ViewPager viewPager = (ViewPager)view.findViewById(R.id.viewPagerDataReport);

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getFragmentManager(), tabLayout.getTabCount());
        viewPager.setAdapter(viewPagerAdapter);

        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        // Add my three icons
        tabLayout.getTabAt(0).setIcon(imageResId[0]);
        tabLayout.getTabAt(1).setIcon(imageResId[1]);
        tabLayout.getTabAt(2).setIcon(imageResId[2]);

        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
                // When user click the tab position , change its color
                int id =tab.getPosition();
                if (id==0){
                    tabLayout.getTabAt(0).getIcon().setColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_IN);
                    tabLayout.getTabAt(1).setIcon(imageResId[1]);
                    tabLayout.getTabAt(2).setIcon(imageResId[2]);
                }
                if (id==1){
                    tabLayout.getTabAt(0).setIcon(imageResId[0]);
                    tabLayout.getTabAt(1).getIcon().setColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_IN);
                    tabLayout.getTabAt(2).setIcon(imageResId[2]);
                }
                if (id==2){
                    tabLayout.getTabAt(0).setIcon(imageResId[0]);
                    tabLayout.getTabAt(1).setIcon(imageResId[1]);
                    tabLayout.getTabAt(2).getIcon().setColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_IN);
                }
                //tab.getIcon().setColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_IN);
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                //tab.getIcon().setColorFilter(Color.parseColor("#a8a8a8"), PorterDuff.Mode.SRC_IN);
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });

        return view;
    }

} 

1 个答案:

答案 0 :(得分:1)

bcz单击其他选项卡时不会改变颜色。您只是将颜色设置为特定标签位置。所以休息会变黄。

尝试这样。

lapply()

或者你可以这样做。

result <- lapply(waluty, function(x) grep("DEM", x))
  

tabOne是一个textview。 tabLayout.getTabAt(0).setCustomView(塔伯恩);