android - TabLayout.TabView 和 TabLayout.Tab 有什么区别

标签 android android-tablayout android-tabs

我试图理解这两个类之间的区别,这两个类都是 TabLayout 类的内部类。 在以下链接中:example

我在示例中看到该方法 onTabSelectedd(TabLayout.Tab tab) 获取对 Tab 对象的引用,出于我无法理解的原因,那里写着:

 ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
 ViewGroup vgTab = (ViewGroup) vg.getChildAt(tab.getPosition());

Tab 对象足够了吗?我看到第二行应该返回与 Tab 相同的对象,它是上述方法的参数。 当我为两个对象打印 toString() 时,我看到参数 tabTabView 的实例,vgTab 的实例选项卡 有人可以解释一下我的误解吗?

最佳答案

TabLayout.Tab 不是 View 的子类。它是一个“概念”选项卡,一个对象,包含在 TabLayout 中呈现单个选项卡所需的所有信息(文本、图标等)。

TabLayout.TabViewView 的子类。它知道如何获取 Tab 并呈现其文本、图标等。

在链接的问题和答案中,使用这样的代码的原因:

ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
ViewGroup vgTab = (ViewGroup) vg.getChildAt(tab.getPosition());

就是onTabSelected()方法只接收一个Tab类型的参数,但是需要做与 View 相关的事情(改变文字大小),所以它必须采取Tab 并“找到”与之对应的 TabView

该代码假设 tabLayout 的第一个子级将是选项卡 View 的容器,然后在该容器内查找与参数选项卡相同位置的 View 。然后它会扫描 View 的所有 subview ,并更改它找到的任何TextView的文本大小。

关于android - TabLayout.TabView 和 TabLayout.Tab 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60642002/

相关文章:

Android Junit 测试 Button 已经开始 Activity

java - 在 Android 中使用 google map api v2 时出错

android - TabLayout 和 ViewPager - 在滑动抽屉项目之间滑动后 Tabs 不起作用

android - Facebook React Native SDK LoginButton 在 Android 中呈现带有红色边框的 UnimplementedView

android - buildType block 在Gradle中如何工作?

android - 如何 Intent 进入特定的标签 fragment ?

android-fragments - 使用选项卡式片段单击另一个 recyclerview 片段的特定项目时加载一个 recyclerview 片段?

java - Android - fragment 不直接更新彼此相邻的选项卡

java - 从固定选项卡中删除滑动操作

android - 如何在获得焦点时为 TabLayout 中的选项卡的文本和图标设置颜色