[转载]自定义TabHost控件 – _Android_红颜 – eoe移动开发者社区.
今天学习了一下 TabHost以前也是一知半解 今天想系统了解下 JAVA代码非常简单 xml只是2个简单布局 这里就不列出了
TabHost tabHost = (TabHost)findViewById(R.id.tabHost); tabHost.setup(); LayoutInflater inflater = LayoutInflater.from(this); inflater.inflate(R.layout.tab1, tabHost.getTabContentView()); inflater.inflate(R.layout.tab2, tabHost.getTabContentView()); tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("TAB1").setContent(R.id.tab1)); tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("TAB2").setContent(R.id.tab2));
学习过程中遇到了这样的错误 在setContent里 我添入的是 layout的ID 导致运行出错
Could not create tab content because could not find view with id 2130903041
这里是我的不仔细 查了很久发现原来 这里serContent()里边的要是视图的id,比如
LinearLayout的ID 这样的,结果把2个xml文件里的Layout加上id再载入就OK了,这里要
反思一下 为什么会出现这种细节错误
底部标签的实现:
其实也很简单,就是xml里改一下 2个属性
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" /> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
这里FrameLayout要写在上边 weight要设为1 然后还要在外边加一层垂直布局的LinearLayout