标签:
java.lang.Object
? android.view.View
? android.view.ViewGroup
? android.widget.FrameLayout
? android.widget.TabHost
TAB的容器。这个对象包含两个子元素:
tab(标签)有一个indicator,content后台tag.例如:
tabHost.addTab(tabHost.newTabSpec("tab_time").setIndicator("时钟").setContent(R.id.tab_time));
有三个重载的方法可以设置标签的名字和图案。返回值都是TabHost.TabSpec
返回值都是TabHost.TabSpe。是第一个比较常用。
这是相当于一个tag的身份证,在 new TabSpec(String tag)决定了
public class TabHost...{ //常用属性 private TabWidget mTabWidget; private FrameLayout mTabContent; private List<TabSpec> mTabSpecs = new ArrayList<TabSpec>(2); private OnKeyListener mTabKeyListener; public void setup(){ //这里实例化TabWiget mTabWidget = (TabWidget) findViewById(com.android.internal.R.id.tabs); if (mTabWidget == null) { throw new RuntimeException( "Your TabHost must have a TabWidget whose id attribute is ‘android.R.id.tabs‘"); } .... mTabWidget.setTabSelectionListener(new TabWidget.OnTabSelectionChanged() { public void onTabSelectionChanged(int tabIndex, boolean clicked) { setCurrentTab(tabIndex); if (clicked) { mTabContent.requestFocus(View.FOCUS_FORWARD); } } }); mTabContent = (FrameLayout) findViewById(com.android.internal.R.id.tabcontent); if (mTabContent == null) { throw new RuntimeException( "Your TabHost must have a FrameLayout whose id attribute is " + "‘android.R.id.tabcontent‘"); } } }
注意:在自定义自己的TabHost的时候,Tabwiget和FrameLayout不可以自定义Id。为它需要在setup里面实例化,因此需要在addTab添加内容之前调用setup方法
标签:
原文地址:http://www.cnblogs.com/Mihai/p/5598554.html