android FragmentActivity+FragmentTabHost+Fragment框架布局
16lz
2021-01-26
这周比较闲,计划系统的学习一下android开发,我本是一名IOS程序员,对手机开发还是有自己的一套思路的, 固这套思路用到我当前学android上了,先选择从Main页面的tabbar部分代码入手, Android框架布局方式大致分两种, TabActivity+TabHost+Activity,这种方式已过期, 另一种就是 FragmentActivity+FragmentTabHost+Fragment这种方式是当前最新的方式,也是google推荐使用方式,那么我当然选第二种方式了,于是就在AndroidBus找关于FragmentActivty布局的案例,幸苦了大半天终于找到一个满意的,研究了下代码,并不难,而且比第一种布局方式简单。
下面我贴这部分代码出来:
public class MainTabActivity extends FragmentActivity{//定义FragmentTabHost对象private FragmentTabHost mTabHost;//定义一个布局private LayoutInflater layoutInflater;//定义数组来存放Fragment界面 下面数组中的成员其实都是 Fragment 相当于 TabActivity中的Activity(就是一个页面)private Class fragmentArray[] = {FragmentPage1.class,FragmentPage2.class,FragmentPage3.class,FragmentPage4.class,FragmentPage5.class};//定义数组来存放按钮图片private int mImageViewArray[] = {R.drawable.tab_home_btn,R.drawable.tab_message_btn,R.drawable.tab_selfinfo_btn, R.drawable.tab_square_btn,R.drawable.tab_more_btn};//Tab选项卡的文字private String mTextviewArray[] = {"首页", "消息", "好友", "广场", "更多"};public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_tab_layout); initView(); } /** * 初始化组件 */private void initView(){//实例化布局对象 /*在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。 不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化; 而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。*/layoutInflater = LayoutInflater.from(this);/*就是把指定的布局资源注射到指定的容器*///实例化TabHost对象,得到TabHostmTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);//R.id.realtabcontent 这里是一个FrameLayout标签mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);//得到fragment的个数int count = fragmentArray.length;for(int i = 0; i < count; i++){//为每一个Tab按钮设置图标、文字和内容TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i]).setIndicator(getTabItemView(i));//将Tab按钮添加进Tab选项卡中mTabHost.addTab(tabSpec, fragmentArray[i], null);//设置Tab按钮的背景mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.selector_tab_background);}}/** * 给Tab按钮设置图标和文字 */private View getTabItemView(int index){//LayoutInflater是用来找res/layout/下的xml布局文件View view = layoutInflater.inflate(R.layout.tab_item_view, null);ImageView imageView = (ImageView) view.findViewById(R.id.imageview);imageView.setImageResource(mImageViewArray[index]);TextView textView = (TextView) view.findViewById(R.id.textview);textView.setText(mTextviewArray[index]);return view;}}
更多相关文章
- android实操--练习1
- 自定义android的tab样式 《》
- Android之appWidget按钮事件
- Android实现数据存储技术 de 五种方式
- Android(安卓)Studio使用教程(一)
- android LayoutInflater.inflate()的参数及其用法
- Android中launchMode模式详解
- Android(安卓)ListView中添加不同的多种布局
- 【Android】RecyclerView