[转载]Android自定义TabHost控件 - _Android_红颜 - eoe移动开发者社区

[转载]自定义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

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

注册