本文主要是介绍Android 拦截Tablayout 点击事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景:特定需求,点击某一个tab时,直接跳转到其他页面,不做任何选中操作,如下图点击小视频要跳转而不是选中这个tab
思考:Tablayout是安卓官方提供的,内部的点击事件都在内部封装,没有暴露类似的回调接口让用户自己处理某个tab的点击事件,
但是通过看源码发现 每一个tab的点击事件其实是一个内部封装的继承自LinearLayout的一个TabView来触发的
看1496行有个performClick方法,我们只要把这个方法拦截住,然后自己处理点击逻辑就可以了,这个方法里的this.tab.select()执行后你就会看到页面的上的tab选中了。
具体做法:这里只贴关键代码
TabLayout tl = findViewById(R.id.film_tl);
TabLayout.Tab tab = tl.newTab();
LinearLayout view = tab.view;
view.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {//这里做你想做的事情 然后return true 就不在往下执行了return true;}
});
tl.addTab(tab.setText("小视频"));
如果Tablayout关联了ViewPager 那么对应的Tab 可以通过
tl.getTabAt(i) 来获取
收获:细心、耐心 问题总能找到突破口,之前考虑过自定义Tablayout ,但是最后发现 这么几行代码也可以解决问题,只有深入理解了问题的本质才可以更好的解决问题。
这篇关于Android 拦截Tablayout 点击事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!