关于tablayout的tab点击事件

在做项目的过程中,使用tablayout+viewpager实现页卡的切换,但是有个需求是点击其中的一个tab,能够弹出显示一个popupwindow,而且不影响tablayout+viewpager的联动。

这里只贴出关键代码,参考了阳春面博客的方法。

重新设置点击事件

for (int i = 0; i < tablayout.getTabCount(); i++) {
    TabLayout.Tabtab=tablayout.getTabAt(i);
    if (tab!=null){
    tab.setCustomView(tabPager.getTabView(i));
    if (tab.getCustomView()!=null){
        View tabView=  (View)tab.getCustomView().getParent();
          tabView.setTag(i);
tabView.setOnClickListener(mTabOnClickListener);
                                }
                }
        }

处理点击事件

private View.OnClickListener mTabOnClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int position= (int) v.getTag();
            if (position==0 &&tablayout.getTabAt(position).isSelected()==true){
                Toast.makeText(mActivity, "点击了第一个tab", Toast.LENGTH_SHORT).show();
            }else if (position==1 && tablayout.getTabAt(position).isSelected()==true){
                Toast.makeText(mActivity, "点击了第二个tab", Toast.LENGTH_SHORT).show();
            }else {
                TabLayout.Tab tab = tablayout.getTabAt(position);
                if (tab != null) {
                    tab.select();
                }
            }
        }
    };

实现这个需求的关键地方在于判断tab位置的同时,判断tab是否选中状态,是选中状态,才可以点击让popupwindow显示。

效果图以后补。。。

你可能感兴趣的:(android)