利用Fragment + FragmentTabHost实现书签导航
来源:互联网 发布:伐木累软件 编辑:程序博客网 时间:2024/06/12 00:57
效果展示:
FragmentTabHost与RadioGroup的区别:
* 1. FragmentTabHost的代码来说要少。
* 2. FragmentTabHost可扩展性要强。
* 缺点:Fragment界面只能通过书签切换,没有ViewPager
不多说,直接上代码:
1.MainActiviry的代码:
public class Fragment_FragmentTabHost extends AppCompatActivity { private FragmentTabHost tabHost ; //准备一些Fragment,设置到布局中。 private Class[] fragments = new Class[]{Fragment_A.class, Fragment_B.class, Fragment_C.class}; //准备一些Fragment的数组。设置到.FragmentTabHost中 private String[] tabText = new String[]{"日程", "发现", "设置"}; private int[] immageResIds = new int[]{ R.drawable.game,R.drawable.appgroup,R.drawable.home}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_fragment_tabhost); tabHost = (FragmentTabHost) findViewById(R.id.tabHost); initTabHost(); } private void initTabHost() { //步骤一: // 参数 1上下文 2 .管理器 3 放置Fragment的容器的id。 tabHost .setup(this, getSupportFragmentManager(), R.id.fragment_container); for (int i = 0; i < fragments.length; i++) { //步骤二: //创建一个Tab对象 //newTabSpec:传入tab,用作一个标识 //setIndicator传入一个View,会显示到tab中 TabHost.TabSpec tab = tabHost .newTabSpec(tabText[i]).setIndicator(createTabView(i)); //步骤三: //将fragment传入到tabHost中 //将tab放置到tabHost中 //将tab和对应的Fragment绑定 tabHost .addTab(tab, fragments[i], null); } } //方法1. private View createTabView(int index) { //创建一个tab容器 LinearLayout tabContainer = new LinearLayout(this); //将容器设置的方向设置为竖直的 tabContainer.setOrientation(LinearLayout.VERTICAL); //将容器的子控件设置为居中 tabContainer.setGravity(Gravity.CENTER); ImageView imageview = new ImageView(this); imageview.setImageResource(immageResIds[index]); //通过addView方法将imageView添加到tabContainer中 tabContainer.addView(imageview); TextView tv = new TextView(this); tv.setText(tabText[index]); tv.setGravity(Gravity.CENTER); //通过addView方法将tv添加到tabContainer中 tabContainer.addView(tv); return tabContainer; } /* * 方法2:通过布局管理器来创建动态View,自己选择一种方法。 * private View createTabView2(int index) { LinearLayout tabContainer = (LinearLayout) getLayoutInflater().inflate(R.layout.tab_item,null); ImageView imageView = (ImageView) tabContainer.findViewById(R.id.iv); imageView.setImageResource(immageResIds[index]); TextView textView = (TextView) findViewById(R.id.tv_name); textView.setText(tabText[index]); return tabContainer; }*/
2 . 布局文件代码:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RelativeLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"/> <android.support.v4.app.FragmentTabHost android:id="@+id/tabHost" android:layout_width="match_parent" android:layout_height="72dp"/></LinearLayout>
3 .创建3个选择器:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@mipmap/bottombar_game_pressed" android:state_checked="true"/> <item android:drawable="@mipmap/bottombar_game_pressed" android:state_selected="true"/> <item android:drawable="@mipmap/bottombar_game_normal"/></selector>
0 0
- 利用Fragment + FragmentTabHost实现书签导航
- 利用RadioGroup + ViewPager + Fragment实现书签导航
- 利用TabLayout(5.0新技术)+ViewPager+Fragment方法实现书签导航
- FragmentTabhost和Fragment实现底部导航栏
- FragmentTabHost+ViewPager+Fragment实现底部Tab导航
- Android Tab导航菜单栏--FragmentTabHost+Fragment实现(基础篇)
- FragmentTabHost+Fragment实现底部导航栏,仿淘宝
- Android Tab导航菜单栏--FragmentTabHost+Fragment实现(转载)
- 底部导航栏:FragmentTabHost+Fragment
- FragmentTabHost实现底部导航
- 利用Fragment和FragmentTabHost实现各类app底部菜单栏
- Android底部导航栏—FragmentTabHost+Fragment
- 利用Fragment+Button实现菜单导航
- FragmentTabHost实现底部导航菜单
- FragmentTabhost实现底部导航栏
- FragmentTabHost+Fragment实现底部菜单栏
- Fragment+FragmentTabHost实现底部菜单栏
- Fragment+FragmentTabHost实现底部菜单栏
- UITableableView自定义cell
- ontouchevent,oninterceptTouchEvent
- 用数组代替递归极大提高算法时间
- Dagger2, Retrofit和MVP设计模式案例分析
- 在js里获得type="file"的文件大小从而进行限制
- 利用Fragment + FragmentTabHost实现书签导航
- OpenGL.裁剪算法
- 文件存储实现通讯录
- BSOJ 4685 DOG进游戏 回顾——KMP
- C++基类的析构函数为什么是虚函数
- Coursera机器学习 week6 编程作业代码
- android基础之依赖注入
- 【SSH】hibernate之hql学习
- 硬件产品研发必须注意事项(必要了解的前提)