FragmentTabHost
2016-05-23 12:23
302 查看
FragmentTabHost联合
Fragment可以方便的实现导航页面模式。
下面再代码中简介:
activity.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </FrameLayout> <android.support.v4.app.FragmentTabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#33b5e5" > <!--<FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight ="0"> </FrameLayout>--> </android.support.v4.app.FragmentTabHost> </LinearLayout> fragment.xml <?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:background="#6998bb" android:orientation="vertical"> </LinearLayout> 其中一个Fragment.java示例,其它都一样 public class Fragment1 extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_tabpager1,container,false); } } activity.java public class HomeActivity extends FragmentActivity { private FragmentTabHost mFragmentTabHost; private FrameLayout container; private String[] tabTitles; private Class[] fragments; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); initView(); } private void initView() { mFragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); //相当于是初始化FragmentTabHost,重要参数就是FragmentManager了,它用于后面自动创建Fragment //第三个参数如果不指定的话,它将用自带的容器来装页面 mFragmentTabHost.setup(this,getSupportFragmentManager(),R.id.container); container = (FrameLayout) findViewById(R.id.container); tabTitles = new String[]{"附近", "热门", "探索", "我的"}; //创建一个Fragment集合 fragments = new Class[]{Fragment1.class, Fragment2.class, Fragment3.class, Fragment4.class}; for (int i = 0; i < fragments.length; i++) { //创建导航标签 TabHost.TabSpec tabSpec = mFragmentTabHost //获得一个TabSpec,参数它的标签, // 通过调用mFragmentTabHost.getCurrentTabTag()可以获得当前标签 .newTabSpec(tabTitles[i]) //指定一个View作为该Tab的指示器,这个View可以是任意的 .setIndicator(getIndicator(i)); //为FragmentTabHost添加一个Fragment,它可以根据类名自动创建Fragment, //最后一个参数Bundle是被FragmentTabHost内部的TabInfo所持有的, //当然与TabSpec对应的Fragment的tag就是该TagSpec的tag mFragmentTabHost.addTab(tabSpec, fragments[i], null); //通过这个方法可以获得对应位置的Tab的View,然后给他设置背景选择器 mFragmentTabHost.getTabWidget().getChildAt(i) .setBackgroundResource(R.drawable.selector_tab_background); //这个方法可以设置分隔线,null为没有分隔线 mFragmentTabHost.getTabWidget().setDividerDrawable(null); } } /** * 获取背景选择器 * @param position tab的位置 * @return */ private View getIndicator(int position) { View view = LayoutInflater.from(this).inflate(R.layout.item_tab, null); ImageView imageView = (ImageView) view.findViewById(R.id.iv_tabImage); imageView.setImageResource(R.drawable.cat); TextView textView = (TextView) view.findViewById(R.id.tv_tabTitle); textView.setText(tabTitles[position]); return view; } }
效果图:
相关文章推荐
- 安卓SQLite基础入门
- java 枚举源码解析
- likely() and unlikely()
- sublime text3 linux下中文支持
- Servlet编程:(2)Servlet的生命周期
- android SQLite基本操作
- Android studio配置干活
- mysql主从复制(超简单)
- Lex Yacc (三) 语法树打印
- 学习Spring MVC,关于注解的Spring MVC,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例
- spring aop方法中通过代理工厂注入通知
- HDOJ-2196 Computer
- 微信底部滑动时图标渐变色的实现
- Error:Failed to find: com.facebook.fresco:fresco:0.7.2+
- mongodb一些使用技巧或注意事项记录
- Difference of Maven JAXB plugins
- Retrofit2 更新指南
- 持续部署单页应用的7大技巧
- swift对象存储
- ubuntu14.04安装deepinlinux相关软件