Android TabLayout使用问题整理
程序员文章站
2022-03-29 18:05:04
1、TabLayout 的 onTabSelected没有被回调的问题。页面加载进来的时候onTabSelected 回调没有被执行。即第一次进入的时候,onTabSelected没有被回调。通过源码分析,当我们执行addTab方法添加Tab的时候,最后会调用到 dispatchTabSelected方法,在dispatchTabSelected方法里面调用addOnTabSelectedListener 的onTabSelected()方法。但是这个时候,mSelectedListeners 为空...
1、TabLayout 的 onTabSelected没有被回调的问题。
页面加载进来的时候onTabSelected 回调没有被执行。即第一次进入的时候,onTabSelected没有被回调。
通过源码分析,当我们执行addTab方法添加Tab的时候,最后会调用到 dispatchTabSelected
方法,在dispatchTabSelected
方法里面调用addOnTabSelectedListener
的onTabSelected()
方法。但是这个时候,mSelectedListeners 为空(因为这个此时我们还没有设置OnTabSelectedListener),因此,就没有回调到onTabSelected。所以
第一次没有执行OnTabSelected回调,是因为我们的代码顺序问题,因此,要想第一次进入的时候回调到OnTabSelected方法,我们应该先设置addOnTabSelectedListener 监听器,再添加Tab。
// 1, 设置 addOnTabSelectedListener
// 设置 addOnTabSelectedListener 必须在 addTab 之前。
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
// 2.添加Tab
mTabLayout.addTab(mTabLayout.newTab().setText("书城"),true);
mTabLayout.addTab(mTabLayout.newTab().setText("音乐"));
mTabLayout.addTab(mTabLayout.newTab().setText("电影"));
2、TabLayout与RecyclerView联动
本文地址:https://blog.csdn.net/LoveShadowing/article/details/107456640
上一篇: PHP数组内存耗用太多问题的解决方法
下一篇: 初次接触php抽象工厂模式(Elgg)
推荐阅读
-
详解 Android中Libgdx使用ShapeRenderer自定义Actor解决无法接收到Touch事件的问题
-
详解 Android中Libgdx使用ShapeRenderer自定义Actor解决无法接收到Touch事件的问题
-
Android在layout xml中使用ViewStub完成动态加载问题
-
html5在android中的使用问题及技巧解读
-
基于Android中Webview使用自定义的javascript进行回调的问题详解
-
在android开发中尽量不要使用中文路径的问题详解
-
基于Android SDK-在64位Linux中使用需要注意的问题
-
Android使用TabLayout+Fragment实现顶部选项卡
-
Android 使用volley过程中遇到的问题解决办法
-
解决Android使用Handler造成内存泄露问题