注册tablayout 中view的touch事件,通过touch来拦截
/** 拦截tablayout点击事件 */
View.OnTouchListener tabOnClickListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
int pos = (int) view.getTag();
/** 下面都是自定义逻辑了 */
if (pos==0 && StringDetectionHelper.isBlackString(userDetail.getMobile())) {
KapHUDManager.errorWithTitle("未绑定手机号");
return true; // 拦截
}
if (pos==1 && StringDetectionHelper.isBlackString(userDetail.getEmail())) {
KapHUDManager.errorWithTitle("未绑定邮箱");
return true; // 拦截
}
return false; // 不拦截
}
};
for (int i=0;i<segeView.getTabCount();i++) {
View view = getTabView(segeView,i);
if (view == null) continue;
view.setTag(i);
view.setOnTouchListener(tabOnClickListener);
}
/** 反射获取tabview */
public View getTabView( TabLayout tabLayout,int index){
TabLayout.Tab tab = tabLayout.getTabAt(index);
if (tab == null) return null;
View tabView = null;
Field view = null;
try {
view = TabLayout.Tab.class.getDeclaredField("mView");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
view.setAccessible(true);
try {
tabView = (View) view.get(tab);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return tabView;
}