小工具知识网

当前位置: 首页 > 行业知识 > Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果菜鸟版保姆级

行业知识

Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果菜鸟版保姆级

2026-11-04 13:45:09 来源:互联网转载

使用了最新版的Android Studio 

对了解ViewPager 和Fragment的联合使用非常有帮助,附源码下载:

https://download.csdn.net/download/my147/88613997

可以手动滑动菜单

也可以通过点击头部菜单进行切换

所有文件概览

第一步:打开Android studio新建一个空的项目

按个人喜欢输入项目名称

………………

等待项目初始化完成!

在res/values目录下colors.xml文件中增加一行

#9f9d98

如下图:定义一个颜色值(顺便了解一下colors.xml文件的应用)

再在res/values目录下strings.xml文件中增加两行

第一个标签

第二个标签

如下图:定义两个字符串值(顺便了解一下strings.xml文件的应用)

下面是activity_main.xml(前台代码):

                                            

MainActivity.java(主界面java代码)

package com.example.myviewpager;import androidx.appcompat.app.AppCompatActivity;import androidx.fragment.app.Fragment;import androidx.fragment.app.FragmentManager;import androidx.fragment.app.FragmentPagerAdapter;import androidx.viewpager.widget.ViewPager;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private TextView item_detail, item_category_report;    private ViewPager viewPagerp;    private fragment_one fragmentone;    private fragment_two fragmenttwo;    private List mfragmentList = new ArrayList();    private FragmentAdapter mfragmentAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initViews();        mfragmentAdapter = new FragmentAdapter(this.getSupportFragmentManager(), mfragmentList);        viewPagerp.setOffscreenPageLimit(2);//viewpager的缓存为2帧        viewPagerp.setAdapter(mfragmentAdapter);        viewPagerp.setCurrentItem(0);//初始设置viewpager选中第一帧        item_detail.setTextColor(Color.parseColor("#0c40b6"));        //viewpager的监听事件        viewPagerp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                /*此方法在页面被选中时调用*/                changeTextColor(position);            }            @Override            public void onPageScrollStateChanged(int state) {                 /*此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。                 arg0==1时默示正在滑动,                 arg0==2时默示滑动完毕了,                 arg0==0时默示什么都没做。*/            }        });    }    /**     * 初始化布局View     */    private void initViews() {        item_detail = (TextView) findViewById(R.id.item_detail);        item_category_report = (TextView) findViewById(R.id.item_category_report);        item_detail.setOnClickListener(this);        item_category_report.setOnClickListener(this);        viewPagerp = (ViewPager) findViewById(R.id.mainViewPager);        fragmentone = new fragment_one();        fragmenttwo = new fragment_two();        //给FragmentList添加数据        mfragmentList.add(fragmentone);        mfragmentList.add(fragmenttwo);    }    /**     * 点击顶部Text 动态修改ViewPager的内容     */    @Override    public void onClick(View v) {        int id = v.getId();        if (id == R.id.item_detail) {            viewPagerp.setCurrentItem(0, true);        } else if (id == R.id.item_category_report) {            viewPagerp.setCurrentItem(1, true);        }    }    public class FragmentAdapter extends FragmentPagerAdapter {        List fragmentList = new ArrayList();        public FragmentAdapter(FragmentManager fm, List fragmentList) {            super(fm);            this.fragmentList = fragmentList;        }        @Override        public Fragment getItem(int position) {            return fragmentList.get(position);        }        @Override        public int getCount() {            return fragmentList.size();        }    }    /**     * 由ViewPager的滑动修改头部导航Text的颜色     * @param position     */    private void changeTextColor(int position) {        if (position == 0) {            item_detail.setTextColor(Color.parseColor("#0c40b6"));            item_category_report.setTextColor(Color.parseColor("#9f9d98"));        } else if (position == 1) {            item_category_report.setTextColor(Color.parseColor("#0c40b6"));            item_detail.setTextColor(Color.parseColor("#9f9d98"));        }    }}

接着在res/layout目录下创建两个Fragment类型文件(fragment_one.xml和fragment_two.xml)

步骤如下:(鼠标放在layout目录上点鼠标右键)

输入文件名称:fragment_one后点finish按钮。

系统会自动创建两个文件:fragment_one.xml和fragment_one.java如下图:

修改fragment_one.xml文件如下:

fragment_one.xml文件代码:

        

fragment_one.java文件不用作任何修改!

按照同样的方法再创建两个文件:fragment_two.xml和fragment_two.java如下图:

输入文件名称:fragment_two后点finish按钮。

系统会自动创建两个文件:fragment_two.xml和fragment_two.java如下图:

修改fragment_two.xml文件如下:

fragment_two.xml文件代码:

        

到此所有的工作都完成了,是不是很简单?这是我第一次分享学习体会;请多多关照!

点击右上角的绿色按钮,看看效果吧!

如下图:

上一篇:揭秘ASP服务器源码,深度探索之旅

下一篇:揭秘,美女英文表达全解析!你必须掌握的时尚语言秘籍!