[转载]自定义TabHost控件 – _Android_红颜 – eoe移动开发者社区.
今天学习了一下 TabHost以前也是一知半解 今天想系统了解下 JAVA代码非常简单 xml只是2个简单布局 这里就不列出了
<span class = "typ" >TabHost</span><span class = "pln" > tabHost </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "pun" >(</span><span class = "typ" >TabHost</span><span class = "pun" >)</span><span class = "pln" >findViewById</span><span class = "pun" >(</span><span class = "pln" >R</span><span class = "pun" >.</span><span class = "pln" >id</span><span class = "pun" >.</span><span class = "pln" >tabHost</span><span class = "pun" >);</span><span class = "pln" > tabHost</span><span class = "pun" >.</span><span class = "pln" >setup</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "typ" >LayoutInflater</span><span class = "pln" > inflater </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >LayoutInflater</span><span class = "pun" >.</span><span class = "kwd" >from</span><span class = "pun" >(</span><span class = "kwd" > this </span><span class = "pun" >);</span><span class = "pln" > inflater</span><span class = "pun" >.</span><span class = "pln" >inflate</span><span class = "pun" >(</span><span class = "pln" >R</span><span class = "pun" >.</span><span class = "pln" >layout</span><span class = "pun" >.</span><span class = "pln" >tab1</span><span class = "pun" >,</span><span class = "pln" > tabHost</span><span class = "pun" >.</span><span class = "pln" >getTabContentView</span><span class = "pun" >());</span><span class = "pln" > inflater</span><span class = "pun" >.</span><span class = "pln" >inflate</span><span class = "pun" >(</span><span class = "pln" >R</span><span class = "pun" >.</span><span class = "pln" >layout</span><span class = "pun" >.</span><span class = "pln" >tab2</span><span class = "pun" >,</span><span class = "pln" > tabHost</span><span class = "pun" >.</span><span class = "pln" >getTabContentView</span><span class = "pun" >());</span><span class = "pln" > tabHost</span><span class = "pun" >.</span><span class = "pln" >addTab</span><span class = "pun" >(</span><span class = "pln" >tabHost</span><span class = "pun" >.</span><span class = "pln" >newTabSpec</span><span class = "pun" >(</span><span class = "str" > "tab1" </span><span class = "pun" >).</span><span class = "pln" >setIndicator</span><span class = "pun" >(</span><span class = "str" > "TAB1" </span><span class = "pun" >).</span><span class = "pln" >setContent</span><span class = "pun" >(</span><span class = "pln" >R</span><span class = "pun" >.</span><span class = "pln" >id</span><span class = "pun" >.</span><span class = "pln" >tab1</span><span class = "pun" >));</span><span class = "pln" > tabHost</span><span class = "pun" >.</span><span class = "pln" >addTab</span><span class = "pun" >(</span><span class = "pln" >tabHost</span><span class = "pun" >.</span><span class = "pln" >newTabSpec</span><span class = "pun" >(</span><span class = "str" > "tab2" </span><span class = "pun" >).</span><span class = "pln" >setIndicator</span><span class = "pun" >(</span><span class = "str" > "TAB2" </span><span class = "pun" >).</span><span class = "pln" >setContent</span><span class = "pun" >(</span><span class = "pln" >R</span><span class = "pun" >.</span><span class = "pln" >id</span><span class = "pun" >.</span><span class = "pln" >tab2</span><span class = "pun" >));</span> |
学习过程中遇到了这样的错误 在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个属性
< span class = "tag" >< LinearLayout </span>< span class = "pln" > </ span >< span class = "atn" >android:layout_width</ span >< span class = "pun" >=</ span >< span class = "atv" >"match_parent"</ span >< span class = "pln" > </ span >< span class = "atn" >android:layout_height</ span >< span class = "pun" >=</ span >< span class = "atv" >"match_parent"</ span >< span class = "pln" > </ span >< span class = "atn" >android:orientation</ span >< span class = "pun" >=</ span >< span class = "atv" >"vertical"</ span >< span class = "pln" > </ span >< span class = "tag" >></ span >< span class = "pln" > </ span >< span class = "tag" >< FrameLayout </span>< span class = "pln" > </ span >< span class = "atn" >android:id</ span >< span class = "pun" >=</ span >< span class = "atv" >"@android:id/tabcontent"</ span >< span class = "pln" > </ span >< span class = "atn" >android:layout_width</ span >< span class = "pun" >=</ span >< span class = "atv" >"match_parent"</ span >< span class = "pln" > </ span >< span class = "atn" >android:layout_height</ span >< span class = "pun" >=</ span >< span class = "atv" >"match_parent"</ span >< span class = "pln" > </ span >< span class = "atn" >android:layout_weight</ span >< span class = "pun" >=</ span >< span class = "atv" >"1"</ span >< span class = "pln" > </ span >< span class = "tag" >/></ span >< span class = "pln" > </ span >< span class = "tag" >< TabWidget </span>< span class = "pln" > </ span >< span class = "atn" >android:id</ span >< span class = "pun" >=</ span >< span class = "atv" >"@android:id/tabs"</ span >< span class = "pln" > </ span >< span class = "atn" >android:layout_width</ span >< span class = "pun" >=</ span >< span class = "atv" >"match_parent"</ span >< span class = "pln" > </ span >< span class = "atn" >android:layout_height</ span >< span class = "pun" >=</ span >< span class = "atv" >"wrap_content"</ span >< span class = "pln" > </ span >< span class = "tag" >/></ span >< span class = "pln" > </ span >< span class = "tag" ></ LinearLayout ></ span > |
这里FrameLayout要写在上边 weight要设为1 然后还要在外边加一层垂直布局的LinearLayout