Fragment + TabHost + RadioGroup 结合使用 , 实现底菜单的效果!

1. 使用FragMent是因为 4.0.3之后 ,摒弃了TabActivity这种用法,

Demo 效果图:


先上布局XML R.layout.activity_main

<?xml version="1.0" encoding="utf-8"?><TabHost     xmlns:android="http://schemas.android.com/apk/res/android"android:id="@android:id/tabhost"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <LinearLayout    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <TabWidget     android:id="@android:id/tabs"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:layout_weight="0.0"    android:visibility="gone"/>            <include android:id="@+id/header"    layout="@layout/my_header"    android:layout_height="wrap_content"    android:layout_width="fill_parent"/>        <FrameLayout     android:id="@android:id/tabcontent"    android:layout_width="fill_parent"    android:layout_height="0.0dip"    android:layout_weight="1.0">            <fragment             android:name="com.example.coolsmile.fragment.HomeFragment"            android:id="@+id/HomeFragment"            android:layout_width="match_parent"            android:layout_height="match_parent"            />        <fragment             android:name="com.example.coolsmile.fragment.fragment_tab2"            android:id="@+id/fragment_tab2"            android:layout_width="match_parent"            android:layout_height="match_parent"            />        <fragment             android:id="@+id/fragment_tab3"            android:name="com.example.coolsmile.fragment.fragment_tab3"            android:layout_width="match_parent"            android:layout_height="match_parent"            />        <fragment             android:id="@+id/fragment_tab4"            android:name="com.example.coolsmile.fragment.fragment_tab4"            android:layout_width="match_parent"            android:layout_height="match_parent"            />        <fragment             android:id="@+id/fragment_tab5"            android:name="com.example.coolsmile.fragment.fragment_tab5"            android:layout_width="match_parent"            android:layout_height="match_parent"            />    </FrameLayout>         <RadioGroup    android:id="@+id/main_tab"    android:background="@drawable/bottom1"    android:orientation="horizontal"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:gravity="center_vertical"    android:layout_gravity="bottom">    <RadioButton        android:id="@+id/main_tab_home"                      style="@style/MMTabButton"                      android:layout_weight="1.0"                          android:drawableTop="@drawable/menu_icon_0_normal"                      android:text="@string/main_home"/>    <RadioButton        android:id="@+id/main_tab_info"        style="@style/MMTabButton"        android:layout_weight="1.0"        android:drawableTop="@drawable/menu_icon_1_normal"        android:text="@string/main_my_info" />    <RadioButton        android:id="@+id/main_tab_news"        style="@style/MMTabButton"        android:layout_weight="1.0"        android:drawableTop="@drawable/menu_icon_2_normal"        android:text="@string/main_news" />    <RadioButton     android:id="@+id/main_tab_search"                      style="@style/MMTabButton"                      android:layout_weight="1.0"                      android:drawableTop="@drawable/menu_icon_3_normal"                      android:text="@string/main_search"/>    <RadioButton        android:id="@+id/main_tab_settings"        style="@style/MMTabButton"        android:layout_weight="1.0"        android:drawableTop="@drawable/menu_icon_3_normal"        android:focusable="false"        android:text="@string/main_settings" />    </RadioGroup>        <TextView        android:id="@+id/main_tab_new_message"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal|top"        android:layout_marginLeft="15dip"        android:layout_marginTop="-46dip"        android:background="@drawable/tips"        android:gravity="center"        android:textColor="#ffffff"        android:textSize="10sp"        android:visibility="visible" />      </LinearLayout></TabHost>

这里有个Fragment标签

android:name="com.example.coolsmile.fragment.HomeFragment"

这里的android:name="具体的Fragment的实现类"


这里我的Acitivty继承了FargmentActivity,onCreate方法里

setContentView(R.layout.activity_main);InitUI(); 

private void InitUI(){// get Resource R.stringInitUIString();// set Message NumberTextView main_tab_new_message=(TextView) findViewById(R.id.main_tab_new_message);main_tab_new_message.setVisibility(View.VISIBLE);main_tab_new_message.setText("6");tabHost = (TabHost) findViewById(android.R.id.tabhost);tabHost.setup();tabHost.addTab(tabHost.newTabSpec(main_home).setIndicator(main_home).setContent(R.id.HomeFragment));tabHost.addTab(tabHost.newTabSpec(main_my_info).setIndicator(main_my_info).setContent(R.id.fragment_tab2));tabHost.addTab(tabHost.newTabSpec(main_news).setIndicator(main_news).setContent(R.id.fragment_tab3));tabHost.addTab(tabHost.newTabSpec(main_search).setIndicator(main_search).setContent(R.id.fragment_tab4));tabHost.addTab(tabHost.newTabSpec(main_settings).setIndicator(main_settings).setContent(R.id.fragment_tab5));tabHost.setCurrentTab(0);InitClickListener();}private void InitClickListener(){RadioGroup radioGroup=(RadioGroup) this.findViewById(R.id.main_tab);radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubswitch (checkedId) {case R.id.main_tab_home:tabHost.setCurrentTabByTag(main_home);break;case R.id.main_tab_info:tabHost.setCurrentTabByTag(main_my_info);break;case R.id.main_tab_news:tabHost.setCurrentTabByTag(main_news);break;case R.id.main_tab_search:tabHost.setCurrentTabByTag(main_search);break;case R.id.main_tab_settings:tabHost.setCurrentTabByTag(main_settings);break;default:tabHost.setCurrentTabByTag(main_home);}}});}@Overridepublic void onClick(View v) {}public MainHeader getHeader(){return this.header;}private void InitUIString(){main_home = getResources().getString(R.string.main_home);main_my_info = getResources().getString(R.string.main_my_info);main_news = getResources().getString(R.string.main_news);main_search = getResources().getString(R.string.main_search);main_settings = getResources().getString(R.string.main_settings);}

这里实例了一个效果图的HomeFragMent

public class HomeFragment extends Fragment{View view; String[] presidents = {         "Dwight D. Eisenhower",         "John F. Kennedy",         "Lyndon B. Johnson",         "Richard Nixon",         "Gerald Ford",         "Jimmy Carter",         "Ronald Reagan",         "George H. W. Bush",         "Bill Clinton",         "George W. Bush",         "Barack Obama"     };  @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubview = inflater.inflate(R.layout.fragment_tab1,container,false);Init();return view ;}protected void Init(){ListView list = (ListView)view.findViewById(android.R.id.list);list.setAdapter(new ArrayAdapter<String>(getActivity(),             android.R.layout.simple_list_item_1, presidents));list.setOnItemClickListener(listener);}private OnItemClickListener listener = new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {// TODO Auto-generated method stubIntent intent = new Intent(getActivity(), ListContainActivity.class);                  intent.putExtra("PRESIDENTS_CONTENT",presidents[position]);         getActivity().startActivity(intent);    }};}


点击:下载DEMO







更多相关文章

  1. 【面包屑】快速使用RecyclerView搭建列表
  2. 曾经的笔记——android的学习笔记(布局和电话、短信权限)
  3. 【Android】通过软引用实现图片缓存,防止内存溢出
  4. Android(安卓)自定义 spinner (背景、字体颜色)
  5. Android四大组件之activity之间带数据跳转
  6. Android(安卓)使用BroadCast实现强制下线功能
  7. phonegap sqlite (android)
  8. Android(安卓)之 五大布局案例
  9. 【转】 Array ,Simple ,SimpleCursor Adapter 区别

随机推荐

  1. android RelativeLayout属性和使用, 实现
  2. Android开发之旅:活动与任务
  3. android中的照相机机拍照程序(含连续拍照)
  4. Android华容道——我的第二个Android程序
  5. (一)Android数据结构学习之链表
  6. 关于自己Android开发的感想,怎样深入系统
  7. 技术总结--android篇(二)--布局的优化
  8. Android Window类
  9. Android的线程和线程池
  10. Android(安卓)高级UI解密 (二) :Paint滤镜