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() 时,我看到参数 tab 是 TabView 和 vgTab[= 的实例32=] 是 Tab 的实例
谁能解释一下我的误解?
TabLayout.Tab
不是 View
的子类。它是一个 "conceptual" 选项卡,一个包含在 TabLayout
(文本、图标等)中呈现单个选项卡所需的所有信息的对象。
TabLayout.TabView
是 View
的子类。它知道如何获取 Tab
并呈现其文本、图标等
在您链接的问题和答案中,这样的代码的原因:
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
ViewGroup vgTab = (ViewGroup) vg.getChildAt(tab.getPosition());
就是onTabSelected()
方法只接收一个Tab
类型的参数,但是需要做view相关的事情(改变文字大小),所以必须取那个Tab
和 "find" 相应的 TabView
。
代码假定 tabLayout
的第一个子项将成为选项卡视图的容器,然后在该容器内查找与参数选项卡相同位置的视图。然后它扫描 that 视图的所有子视图,并更改它找到的任何 TextView
的文本大小。
我试图了解 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() 时,我看到参数 tab 是 TabView 和 vgTab[= 的实例32=] 是 Tab 的实例 谁能解释一下我的误解?
TabLayout.Tab
不是 View
的子类。它是一个 "conceptual" 选项卡,一个包含在 TabLayout
(文本、图标等)中呈现单个选项卡所需的所有信息的对象。
TabLayout.TabView
是 View
的子类。它知道如何获取 Tab
并呈现其文本、图标等
在您链接的问题和答案中,这样的代码的原因:
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0); ViewGroup vgTab = (ViewGroup) vg.getChildAt(tab.getPosition());
就是onTabSelected()
方法只接收一个Tab
类型的参数,但是需要做view相关的事情(改变文字大小),所以必须取那个Tab
和 "find" 相应的 TabView
。
代码假定 tabLayout
的第一个子项将成为选项卡视图的容器,然后在该容器内查找与参数选项卡相同位置的视图。然后它扫描 that 视图的所有子视图,并更改它找到的任何 TextView
的文本大小。