如何在TabLayout中获取Tab的视图?

NSo*_*uth 7 android android-layout android-tabs android-tablayout

我想在TabLayout中找到Tab的视图,以便我可以将它传递给另一个函数.我不确定如何找到视图. myTabLayout.getTabAt(0).getCustomView()返回null.

我如何获得视图?

TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tab_layout_main);
tabLayout.addTab(tabLayout.newTab().setText("Page1"));
tabLayout.addTab(tabLayout.newTab().setText("Page2"));

viewPager = (ViewPager) rootView.findViewById(R.id.pager_main);
pagerAdapter = new MyPagerAdapter(getActivity(), getChildFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(pagerAdapter);
Run Code Online (Sandbox Code Playgroud)

NSo*_*uth 49

我最终使用以下内容来获取标签视图.我不确定这是最佳做法,还是在所有Android版本中都是可靠的:

mainTab = ((ViewGroup) tabLayout.getChildAt(0)).getChildAt(desiredPosition);
Run Code Online (Sandbox Code Playgroud)

查看源代码,我们可以看到tabLayout.getChildAt(0)返回SlidingTabStrip内部类扩展LinearLayout,它包含选项卡视图.然后,您可以访问选项卡视图.getChildAt(desiredPosition).请注意,在getChildAt()不检查使用边界时,请确保调用正确的索引并检查null返回.

  • 虽然这对我有用,但在生产应用程序中使用它之前我会犹豫不决.如果谷歌改变了"Tab"布局功能,它可能会引起一些麻烦.由于它主要是私人的,所以很可能. (2认同)