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

What is the difference between TabLayout.TabView and TabLayout.Tab

我试图了解 TabLayout class 内部 class 的两个 class 之间的区别。 在下面 link 中:

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

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

Tab 对象够了吗?我看到第二行的方式应该 return 与 Tab 相同的对象,它是上述方法的参数。 当我为两个对象打印 toString() 时,我看到参数 tabTabViewvgTab[= 的实例32=] 是 Tab 的实例 谁能解释一下我的误解?

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

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

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

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

就是onTabSelected()方法只接收一个Tab类型的参数,但是需要做view相关的事情(改变文字大小),所以必须取那个Tab和 "find" 相应的 TabView

代码假定 tabLayout 的第一个子项将成为选项卡视图的容器,然后在该容器内查找与参数选项卡相同位置的视图。然后它扫描 that 视图的所有子视图,并更改它找到的任何 TextView 的文本大小。