项目使用FragmentTabhost做的主界面,要给每一个单独的Tab设置数字提醒 理所当然的想到是否有mFragmentTabhost.getTab(tag); 这种直接返回一个View 的方法,再去find到指定的控件设置值,发现并有没提供类型的方法,没办法只能来点其他的歪招了 ~
先上官方的使用方式:
mTabHost = new FragmentTabHost(getActivity());
mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.fragment1);
mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"), FragmentStackSupport.CountingFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"), LoaderCursorSupport.CursorLoaderListFragment.class, null);
可以看见 setup 进行了初始化,
mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),;
这句引起了我的注意
于是我来到源码
public class FragmentTabHost extends TabHost {
public void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args) {
...
addTab(tabSpec);
}
}
ok 再去TabHost看看
public class TabHost extends FrameLayout {
private TabWidget mTabWidget;
public void addTab(TabSpec tabSpec) {
...
View tabIndicator = tabSpec.mIndicatorStrategy.createIndicatorView();
...
mTabWidget.addView(tabIndicator);
...
}
}
到这里 相信你已经知道怎么做了!
mTabWidget.addView(tabIndicator);
没错 mTabWidget是Tab的父布局(可能个人叫法不同~) 所以得到单独的Tab布局就很简单了
mTabHost.getTabWidget().getChildTabViewAt(0); //对应的子布局
翻了这么久才找到这个方法 ,真心不易~