zoukankan      html  css  js  c++  java
  • 安卓界面之Viewpager和Tablayout实现滑动界面

    摘要:六部实现选项卡界面

    一.

    在gradle文件添加以下代码:

    implementation 'com.android.support:design:28.0.0'

     在gradle文件添加以上代码后,才能使用Tablayout(版本号28.0.0是我做实验时最新的版本)

    二.布局代码

    <android.support.design.widget.TabLayout
    
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabMaxWidth="0dp"
                app:tabGravity="fill"
                app:tabMode="fixed"
                android:id="@+id/tablayout_id"
                android:textAlignment="center"
                app:tabSelectedTextColor="@color/tabindicatorcolor"
                app:tabTextColor="@color/tabtextcolor"
                app:tabIndicatorColor="@color/tabindicatorcolor"
                android:background="@color/colorPrimary"/>
    <!--app:tabIndicatorColor :指示条的颜色-->
    <!--app:tabIndicatorHeight :指示条的高度-->
    <!--app:tabSelectedTextColor : tab被选中时的字体颜色-->
    <!--app:tabTextColor : tab未被选中时的字体颜色-->

    <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewpager_id"> </android.support.v4.view.ViewPager>

    三.在res/layout目录下自定义xml文件作为fragment中的选项界面

      action_fragment.xml和mark_fragment.xml分别为"行动","统计"选项卡界面

    四.新建多个继承Fragment的子类返回选项界面

    FragmentAction.java
    public class FramentAction extends Fragment {
    
        public FramentAction() {
        }
    
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view=inflater.inflate(R.layout.action_fragment,container,false);
            return view;
        }
    }

     FragmentMark.java

    public class FragmentMark extends Fragment {
        public FragmentMark() {
        }
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view=inflater.inflate(R.layout.mark_fragment,container,false);
            return view;
        }
    
    
    }

    五.自定义继承FragmentPagerAdapter的子类ViewPagerAdater,重写getItem(),getCount(),getPageTitle()方法,添加AddFragment()方法

    public class ViewPagerAdaper extends FragmentPagerAdapter {
    
        private final List<Fragment> fragmentList=new ArrayList<>();
        private final List<String> fragementListTitle=new ArrayList<>();
    
        public ViewPagerAdaper(FragmentManager fm) {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int i) {
            return fragmentList.get(i);
        }
    
        @Override
        public int getCount() {
            return fragementListTitle.size();
        }
    
        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return fragementListTitle.get(position);
        }
    
        public void AddFragemnt(Fragment fragment,String title){
            fragmentList.add(fragment);
            fragementListTitle.add(title);
        }
    }

    六.在MainActivity.java中实现以下代码:

         tabLayout=findViewById(R.id.tablayout_id);
            viewPager=findViewById(R.id.viewpager_id);
            ViewPagerAdaper mAdaper=new ViewPagerAdaper(getSupportFragmentManager());
            mAdaper.AddFragemnt(new FramentAction(),"行动");
            mAdaper.AddFragemnt(new FragmentMark(),"统计");
            viewPager.setAdapter(mAdaper);
            tabLayout.setupWithViewPager(viewPager);
  • 相关阅读:
    Java & PHP RSA 互通密钥、签名、验签、加密、解密
    Spring Cloud:Security OAuth2 自定义异常响应
    Spring Cloud:统一异常处理
    Spring Cloud:多环境配置、eureka 安全认证、容器宿主机IP注册
    Hexo + GitEE 搭建、备份、恢复、多终端
    Spring:AOP面向切面编程
    如何找到适合自己的文档工具?
    比较好玩的工具类合集推荐!!!
    C++11 如何使代码仅执行一次?
    CMake 常用操作有哪些?
  • 原文地址:https://www.cnblogs.com/adressian/p/10224342.html
Copyright © 2011-2022 走看看