当前位置:   article > 正文

TabLayout+ViewPager+Fragment完成滑动界面_deprecated use tablayout and viewpager instead

deprecated use tablayout and viewpager instead

从昨天下午就搞把这三种一起组合,然后就写,但就是不行,快疯了,写了一遍又一遍就是不行,如果看到我文件包名时,你就知道我有多气愤了。今天中午吃饭的时候就突然想起是不是布局出了点什么问题。一瞅,之前我按照官网上的说是用一般使用水平布局,一打ViewPager布局就发现这布局的宽度几乎为0dp的,就是一场竖道。我去,然后换成相对布局,就重新调了调,然后就行了,我都快哭了。哭


在文件上是两部分一个是Fragment,另一个就是操作了。


我是新建了两个Fragment这就不全贴出来了,上上篇都说了很简单,Fragment有着和Activity 相似的生命周期。用他进行管理操作很简单和Activity只是创建的方法不同。

创建一个布局进行界面显示。


添加  compile 'com.android.support:design:23.2.1'  备用

1、创建tab_1.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:background="#990033"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent">
  6. <Button
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content"
  9. android:textAllCaps="false"
  10. android:text="Tab_1_Toast"
  11. android:id="@+id/button1_Toast"
  12. android:layout_centerVertical="true"
  13. android:layout_centerHorizontal="true" />
  14. </RelativeLayout>
一个Button而已。

2、然后创建一个管理它的类这个类继承Fragment  (Tab_Fragment_1)

  1. package com.example.hejingzhou.sb;
  2. import android.os.Bundle;
  3. import android.support.annotation.Nullable;
  4. import android.support.v4.app.Fragment;
  5. import android.support.v7.widget.LinearLayoutManager;
  6. import android.support.v7.widget.RecyclerView;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.Button;
  11. import android.widget.Toast;
  12. /**
  13. * Created by Hejingzhou on 2016/4/9.
  14. */
  15. public class Tab_Fragment_1 extends Fragment {
  16. @Nullable
  17. @Override
  18. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  19. View viewTab_1 = inflater.inflate(R.layout.tab_1, container, false);
  20. Click(viewTab_1);
  21. return viewTab_1;
  22. }
  23. private void Click(View view) {
  24. Button btnToast_1 = (Button) view.findViewById(R.id.button1_Toast);
  25. btnToast_1.setOnClickListener(new View.OnClickListener() {
  26. @Override
  27. public void onClick(View v) {
  28. Toast.makeText(getActivity(), "第一个界面的Button", Toast.LENGTH_SHORT).show();
  29. }
  30. });
  31. }
  32. }

这样的一个例子就熟悉了操作过程,和管理过程。

3、接下来我们需要在创建主界面的自动创建的main_activity.xml中添加TabLayout和ViewPaget  TabLayout是由android.support.design.widget包提供。这就是引入compile 'com.android.support:design:23.2.1'的原因了。

  1. package com.example.hejingzhou.sb;
  2. import android.support.annotation.Nullable;
  3. import android.support.design.widget.TabLayout;
  4. import android.support.v4.app.Fragment;
  5. import android.support.v4.app.FragmentManager;
  6. import android.support.v4.app.FragmentPagerAdapter;
  7. import android.support.v4.view.PagerAdapter;
  8. import android.support.v4.view.ViewPager;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.os.Bundle;
  11. import android.util.Log;
  12. import android.view.ViewGroup;
  13. import android.widget.Toast;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. public class MainActivity extends AppCompatActivity {
  17.     private String TAG = getClass().getSimpleName();
  18.     private ViewPager viewPager;
  19.     private TabLayout tabLayout;
  20.     private List<Fragment> fragmentsList;//fragment容器
  21.     private List<String> titleList;//标签容器
  22.     @Override
  23.     protected void onCreate(Bundle savedInstanceState) {
  24.         super.onCreate(savedInstanceState);
  25.         setContentView(R.layout.activity_main);
  26.         load();//加载
  27.     }
  28.     private void load() {
  29.         tabLayout = (TabLayout) findViewById(R.id.tabLayout);
  30.         viewPager = (ViewPager) findViewById(R.id.viewPager);
  31.         fragmentsList = new ArrayList<>();
  32.         titleList = new ArrayList<>();
  33.         fragmentsList.add(new Tab_Fragment_1());
  34.         fragmentsList.add(new Tab_Fragment_2());//将fragment添加到fragmentList的list容器里
  35.         for (int i = 0; i < 3; i++) { //重复添加 只是填充  没什么用
  36.             fragmentsList.add(new Tab_Fragment_1());
  37.         }
  38.         titleList.add("新闻");
  39.         titleList.add("笑话");
  40.         titleList.add("段子");
  41.         titleList.add("视频");
  42.         titleList.add("图片");
  43.         tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);//tab的模式如果标签多的话用MODE_SCROLLABLE  少的话用MODE_FIXED
  44.         //tabLayout.setBackgroundColor(Color.BLUE);
  45.         FragViewAdapter adapter = new FragViewAdapter(getSupportFragmentManager(), fragmentsList, titleList);
  46.         viewPager.setAdapter(adapter);
  47.         tabLayout.setupWithViewPager(viewPager);
  48.         tabLayout.setTabsFromPagerAdapter(adapter);//虽然过时了但是不能去掉,去掉后
  49.         //如果是滑动操作的话没事,但是使用标签点击的时候就不行了。
  50.         /**
  51.          * @deprecated Use {@link #setupWithViewPager(ViewPager)} to link a TabLayout with a ViewPager
  52.          *             together. When that method is used, the TabLayout will be automatically updated
  53.          *             when the {@link PagerAdapter} is changed.
  54.          */
  55.         /*@Deprecated
  56.         public void setTabsFromPagerAdapter(@Nullable final PagerAdapter adapter) {
  57.             setPagerAdapter(adapter, false);
  58.         }*/
  59.         /**
  60.          * 选择tablayout的监听,一般是用不到的
  61.          */
  62.         tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
  63.             @Override
  64.             public void onTabSelected(TabLayout.Tab tab) {
  65.                 if (tab.getText().equals("新闻")) {
  66.                     Toast.makeText(getApplicationContext(), "滑动或点击了新闻", Toast.LENGTH_SHORT).show();
  67.                 }
  68.                 if (tab.getPosition() == 1) {
  69.                     Toast.makeText(getApplicationContext(), "滑动或点击了笑话", Toast.LENGTH_SHORT).show();
  70.                 }
  71.             }
  72.             @Override
  73.             public void onTabUnselected(TabLayout.Tab tab) {
  74.                 if (tab.isSelected()) {
  75.                     Toast.makeText(getApplicationContext(), "切换了Pager", Toast.LENGTH_SHORT).show();
  76.                 }
  77.                 Log.i(TAG, "tab.getTag()" + tab.getTag());
  78.             }
  79.             @Override
  80.             public void onTabReselected(TabLayout.Tab tab) {
  81.                 //不知道干啥的
  82.             }
  83.         });
  84.     }
  85.     /**
  86.      * 创建适配器,主要是为了fragmet与标题进行匹配的 继承FragmentPagerAdapter
  87.      */
  88.     class FragViewAdapter extends FragmentPagerAdapter {
  89.         List<Fragment> fragmentList_;
  90.         List<String> titleList_;
  91.         public FragViewAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> titleList) {
  92.             super(fm);
  93.             fragmentList_ = fragmentList;
  94.             titleList_ = titleList;
  95.         }
  96.         @Override//fragment匹配
  97.         public Fragment getItem(int position) {
  98.             Log.i(TAG, "getItem  " + fragmentList_.get(position));
  99.             return fragmentList_.get(position);
  100.         }
  101.         @Override//获取fragment的数量
  102.         public int getCount() {
  103.             return titleList_.size();
  104.         }
  105.         @Override//对标题进行匹配
  106.         public CharSequence getPageTitle(int position) {
  107.             Log.i(TAG, "getPageTitle  " + titleList_.get(position));
  108.             return titleList_.get(position);
  109.         }
  110.         @Override//销毁 不知道这样做行不行
  111.         public void destroyItem(ViewGroup container, int position, Object object) {
  112.             super.destroyItem(container, position, object);
  113.             fragmentList_.get(position).onDestroy();
  114.         }
  115.     }
  116. }


把陌生的方法都做注释了,也没啥可说的。

效果:
           

下一步就准备做一个大框架 了,将侧滑菜单导航栏和选项卡和浮动Button与RecyclerView CardView都组合在一起,然后再加上一些免费的额接口我的第一个APP要在毕业前做完。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/225318
推荐阅读
相关标签
  

闽ICP备14008679号