我试图理解这两个类之间的区别,这两个类都是 TabLayout 类的内部类。 在以下链接中:example
我在示例中看到该方法 onTabSelectedd(TabLayout.Tab tab) 获取对 Tab 对象的引用,出于我无法理解的原因,那里写着:
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
ViewGroup vgTab = (ViewGroup) vg.getChildAt(tab.getPosition());
Tab 对象足够了吗?我看到第二行应该返回与 Tab 相同的对象,它是上述方法的参数。 当我为两个对象打印 toString() 时,我看到参数 tab 是 TabView 的实例,vgTab 是 的实例选项卡 有人可以解释一下我的误解吗?
最佳答案
TabLayout.Tab
不是 View
的子类。它是一个“概念”选项卡,一个对象,包含在 TabLayout
中呈现单个选项卡所需的所有信息(文本、图标等)。
TabLayout.TabView
是 View
的子类。它知道如何获取 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/