Android FragmentTabhost实现选项卡

举报
福州司马懿 发表于 2021/11/19 06:48:04 2021/11/19
【摘要】 在Android3.0之后,google创造了Fragment,因此原来的Tabhost已经不推荐使用了,现在一般推荐使用FragmentTabhost。 google考虑到了兼容问题,因此FragmentTabhost并未加在官方的SDK中,而是把它放在了android-support-v4.jar中 下面我带大家来实现一下这个功...

在Android3.0之后,google创造了Fragment,因此原来的Tabhost已经不推荐使用了,现在一般推荐使用FragmentTabhost。

google考虑到了兼容问题,因此FragmentTabhost并未加在官方的SDK中,而是把它放在了android-support-v4.jar中

下面我带大家来实现一下这个功能。

1、MyFragmentTabhostActivity.java


  
  1. public class MyFragmentTabhostActivity extends FragmentActivity {
  2. private Context context;
  3. private FragmentTabHost fragmentTabHost = null;
  4. private Class[] fragmentArray = { MyFragment.class, MyFragment.class, MyFragment.class, MyFragment.class };
  5. private int[] tabImageArray = { R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher };
  6. private String[] tabTextArray = { "广场", "排名", "商城", "我" };
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_fragmenttabhost);
  11. context = this;
  12. initView();
  13. }
  14. private void initView() {
  15. LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  16. fragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
  17. fragmentTabHost.setup(context, getSupportFragmentManager(), R.id.real_tabcontent);
  18. for (int i = 0; i < fragmentArray.length; i++) {
  19. // 给每个Tab按钮设置图标、文字和内容
  20. TabSpec tabSpec = fragmentTabHost.newTabSpec(tabTextArray[i]).setIndicator(getTabItemView(inflater, i));
  21. fragmentTabHost.addTab(tabSpec, fragmentArray[i], null);
  22. // 设置Tab按钮的背景
  23. fragmentTabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.rgb((int)(Math.random()*255), (int)(Math.random()*255), (int)(Math.random()*255)));
  24. }
  25. }
  26. public View getTabItemView(LayoutInflater inflater, int index) {
  27. View view = inflater.inflate(R.layout.item_tab, null);
  28. ImageView imageView = (ImageView) view.findViewById(R.id.imageview);
  29. TextView textView = (TextView) view.findViewById(R.id.textview);
  30. imageView.setImageResource(tabImageArray[index]);
  31. textView.setText(tabTextArray[index]);
  32. return view;
  33. }
  34. }

2、Fragment.java


  
  1. public class MyFragment extends Fragment {
  2. @Override
  3. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  4. View view = inflater.inflate(R.layout.layout_fragment, null);
  5. view.setBackgroundColor(Color.rgb((int)(Math.random()*255), (int)(Math.random()*255), (int)(Math.random()*255)));
  6. return view;
  7. }
  8. }

3、activity_fragment.xml


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <FrameLayout
  7. android:id="@+id/real_tabcontent"
  8. android:layout_width="match_parent"
  9. android:layout_height="0dp"
  10. android:layout_weight="1" />
  11. <android.support.v4.app.FragmentTabHost
  12. android:id="@android:id/tabhost"
  13. android:layout_width="match_parent"
  14. android:layout_height="wrap_content"
  15. android:layout_weight="0" >
  16. <FrameLayout
  17. android:id="@android:id/tabcontent"
  18. android:layout_width="0dp"
  19. android:layout_height="0dp"/>
  20. </android.support.v4.app.FragmentTabHost>
  21. </LinearLayout>

4、item_tab.xml


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <LinearLayout
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:layout_centerInParent="true"
  10. android:gravity="center_horizontal"
  11. android:orientation="vertical" >
  12. <ImageView
  13. android:id="@+id/imageview"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:src="@drawable/ic_launcher" />
  17. <TextView
  18. android:id="@+id/textview"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:text="" />
  22. </LinearLayout>
  23. </RelativeLayout>

5、layout_fragment.xml


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. </LinearLayout>

6、运行截图


文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/chy555chy/article/details/51451568

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。