fragmenttab使用流程
发布日期:2021-08-31 03:56:11 浏览次数:12 分类:技术文章

本文共 3066 字,大约阅读时间需要 10 分钟。

第一步:写main xml文件

View Code
View Code
View Code

 

 

第二步:在mainactivity中设置图片和文字资源

// 图片    @DrawableRes    private int mImages[] = {            R.drawable.tab_counter,            R.drawable.tab_assistant,            R.drawable.tab_contest,            R.drawable.tab_center    };    // 标题    private String mFragmentTags[] = {            "counter",            "assistant",            "contest",            "center"    };
View Code
private View getImageView(int index) {        @SuppressLint("InflateParams")        View view = getLayoutInflater().inflate(R.layout.view_tab_indicator, null);        ImageView imageView = (ImageView) view.findViewById(R.id.tab_iv_image);        imageView.setImageResource(mImages[index]);        return view;    }
View Code 获取图片资源

tab选中效果

View Code

第三步:MainActivity中实例化控件,这里使用了一个插件,叫做butterknife。极大省略了findviewbyid 这样的重复性代码。这样就可以使用mtabhost了

@Bind(android.R.id.tabhost) FragmentTabHost mTabHost;  ButterKnife.bind(this)

第四步:写 oncreate方法

先设置fragment manager

然后给tab设置图片和文字,添加fragment

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);        mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);//fragment管理        mTabHost.getTabWidget().setDividerDrawable(null); // 去掉分割线        for (int i = 0; i < mImages.length; i++) {            // Tab按钮添加文字和图片            TabHost.TabSpec tabSpec = mTabHost.newTabSpec(mFragmentTags[i]).setIndicator(getImageView(i));            // 添加Fragment            mTabHost.addTab(tabSpec, FragmentTab.class, null);            // 设置Tab按钮的背景            mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.color.pedo_actionbar_bkg);        }    }
View Code

 

第五步:写fragment

@Bind(R.id.tab_tv_text) TextView mTvText;    private View mViewContent; // 缓存视图内容    @Nullable @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,                             @Nullable Bundle savedInstanceState) {        if (mViewContent == null) {            mViewContent = inflater.inflate(R.layout.fragment_tab, container, false);        }        // 缓存View判断是否含有parent, 如果有需要从parent删除, 否则发生已有parent的错误.        ViewGroup parent = (ViewGroup) mViewContent.getParent();        if (parent != null) {            parent.removeView(mViewContent);        }        ButterKnife.bind(this, mViewContent);        return mViewContent;    }    @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        // 显示Fragment的Tag信息        mTvText.setText(String.valueOf("Page: " + getTag()));    }    @Override public void onDestroyView() {        super.onDestroyView();        ButterKnife.unbind(this);    }
View Code

 

转载于:https://www.cnblogs.com/forri/p/5424095.html

转载地址:https://blog.csdn.net/weixin_34061042/article/details/93071396 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Windows Server 笔记(六):Active Directory域服务:用户(1)
下一篇:手机响应式wap网页最佳方案

发表评论

最新留言

很好
[***.229.124.182]2024年04月07日 08时19分33秒