fragment + fragmentTabHost实现底部菜单与自定义fragment管理

以前实现底部菜单常用TabActivity+TabHost,android3.0以后不建议使用,而使用fragment替代

新建bottommenu.xml布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><FrameLayoutandroid:id="@+id/bt"android:layout_width="fill_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#ff00ff"></FrameLayout><RadioGroupandroid:id="@+id/tab_rg_menu"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@drawable/mmfooter_bg"android:orientation="horizontal"><RadioButtonandroid:id="@+id/tab_rb_1"style="@style/tab_rb_style"android:checked="true"android:drawableTop="@drawable/tab_selector_weixing"android:text="微信"/><RadioButtonandroid:id="@+id/tab_rb_2"style="@style/tab_rb_style"android:drawableTop="@drawable/tab_selector_tongxunlu"android:text="通讯录" /><RadioButtonandroid:id="@+id/tab_rb_3"style="@style/tab_rb_style"android:drawableTop="@drawable/tab_selector_faxian"android:text="发现" /><RadioButtonandroid:id="@+id/tab_rb_4"style="@style/tab_rb_style"android:drawableTop="@drawable/tab_selector_wo"android:text="自己" /></RadioGroup></LinearLayout>

这里使用RadioGroup来实现底部菜单选项,FrameLayout作为内容容器

FrameLayout的layout_weight设置成1是为了除了底部的菜单选项,其他

高度由他占满。

在用layout_weight布局时一般配合相应的高度或宽度设置成0dip,例如这里的

android:layout_height="0dp"

由于所有的RadioButton都有共同的样式属性,所以可以相同的地方提出来,,

供所有的引用

在values的styles.xml里边新建一个样式组

<style name="tab_rb_style"><item name="android:layout_width" >0dp</item><item name="android:layout_height" >wrap_content</item><item name="android:layout_weight" >1</item><item name="android:button" >@null</item><item name="android:textColor" >@color/tab_selector_tv_color</item><item name="android:gravity" >center_horizontal|bottom</item><item name="android:layout_gravity" >bottom</item><item name="android:background" >@drawable/tab_selector_checked_bg</item></style>使用style="@style/tab_rb_style"方式引用

制作菜单的时候需要在不同状态下改变控件的样式,一般背景图片等。

这是就需要使用到selector,他提供很多状态对应的属性设置。

例如:这里就是控件单选按钮在选择与否时候的图片

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="" ><item android:state_checked="false" android:drawable="@drawable/tab_find_frd_normal"></item><item android:state_checked="true" android:drawable="@drawable/tab_find_frd_pressed"></item></selector>

然后新建一个activity BottomMenu引用制作好的布局文件运行就可以看到

现在就把菜单选项和内容容器制作好了,现在只需要加上fragmentTabHost管理不同的fragment就可以了。

fragmentTabHost相当于就是一个装满fragment的容器,我们可以使用

fragmentTabHost.setCurrentTab(x)来进行fragment的切换

现在在原来bottommenu.xml文件中加入FragmentTabHost布局

<android.support.v4.app.FragmentTabHostandroid:id="@android:id/tabhost"android:layout_width="match_parent"android:layout_height="wrap_content"android:visibility="gone"><FrameLayoutandroid:id="@android:id/tabcontent"android:layout_width="0dp"android:layout_height="0dp"android:layout_weight="0" /></android.support.v4.app.FragmentTabHost>在BottomMenu activity中为FragmentTabHost加入fragment,

在为RadioGroup添加好事件进行tab切换即可

fth.setup(this, getSupportFragmentManager(), R.id.bt);最后一个参数是指定容器id也就是

孜孜不倦的追求奋斗,加油。

fragment + fragmentTabHost实现底部菜单与自定义fragment管理

相关文章:

你感兴趣的文章:

标签云: