Fragment+Viewpager+嵌套Tablelayout+fragment

来源:互联网 发布:宁波seo大牛 编辑:程序博客网 时间:2024/06/05 04:28

 一个典型模板

 创建几个Fragment和布局,这里写一个例子就不多写了,因为都一样。记得给布局一个颜色


import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.bwei.czx.czxviewpager_fragment.R;/** * Created by czx on 2017/10/26. */public class Fragment11 extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment1_layout,null);        return view;    }}


Activity布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:id="@+id/viewpager">    </android.support.v4.view.ViewPager>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="50dp"        android:orientation="horizontal">        <Button            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="wrap_content"            android:text="按钮1"            android:id="@+id/btn1"/>        <Button            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="wrap_content"            android:text="按钮2"            android:id="@+id/btn2"/>        <Button            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="wrap_content"            android:text="按钮3"            android:id="@+id/btn3"/>    </LinearLayout></LinearLayout>

Activity代码:

import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import com.bwei.czx.czxviewpager_fragment.fragment.Fragment1;import com.bwei.czx.czxviewpager_fragment.fragment.Fragment2;import com.bwei.czx.czxviewpager_fragment.fragment.Fragment3;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private ViewPager viewPager;    private Button btn1;    private Button btn2;    private Button btn3;    private List<Button> buttons;    private List<Fragment> fragments;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        viewPager = (ViewPager) findViewById(R.id.viewpager);        btn1 = (Button) findViewById(R.id.btn1);        btn2 = (Button) findViewById(R.id.btn2);        btn3 = (Button) findViewById(R.id.btn3);        btn1.setOnClickListener(this);        btn2.setOnClickListener(this);        btn3.setOnClickListener(this);        fragments = new ArrayList<>();        Fragment1 fragment1 = new Fragment1();        Fragment2 fragment2 = new Fragment2();        Fragment3 fragment3 = new Fragment3();        fragments.add(fragment1);        fragments.add(fragment2);        fragments.add(fragment3);        FragmentManager fm = getSupportFragmentManager();        MyAdapter adapter = new MyAdapter(fm);        viewPager.setAdapter(adapter);    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn1:                viewPager.setCurrentItem(0);                break;            case R.id.btn2:                viewPager.setCurrentItem(1);                break;            case R.id.btn3:                viewPager.setCurrentItem(2);                break;        }    }    class MyAdapter extends FragmentPagerAdapter{        public MyAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return fragments.get(position);        }        @Override        public int getCount() {            return fragments.size();        }    }}



我们在第一个Fragment中嵌套Tablelayout+fragment

Fragment1中的代码


import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.bwei.czx.czxviewpager_fragment.R;import java.util.ArrayList;import java.util.List;/** * Created by czx on 2017/10/26. */public class Fragment1 extends Fragment {    private TabLayout tabLayout;    private ViewPager viewPager;    String[] ArrTitle = {"标题1","标题2","标题3","标题4"};    private List<Fragment> fragments;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment1_layout,null);        tabLayout = (TabLayout) view.findViewById(R.id.tablayout);        viewPager = (ViewPager) view.findViewById(R.id.f1viewpager);        //配置        tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);        tabLayout.setupWithViewPager(viewPager);        fragments = new ArrayList<>();        Fragment11 fragment11 = new Fragment11();        Fragment22 fragment22 = new Fragment22();        Fragment33 fragment33 = new Fragment33();        Fragment44 fragment44 = new Fragment44();        fragments.add(fragment11);        fragments.add(fragment22);        fragments.add(fragment33);        fragments.add(fragment44);        FragmentManager fm = getActivity().getSupportFragmentManager();        Myf1Adpter adpter = new Myf1Adpter(fm);        viewPager.setAdapter(adpter);        return view;    }    class Myf1Adpter extends FragmentPagerAdapter{        public Myf1Adpter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return fragments.get(position);        }        @Override        public int getCount() {            return fragments.size();        }        @Override        public CharSequence getPageTitle(int position) {            return ArrTitle[position];        }    }}

Fragment1中的布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:background="#0ff">    <android.support.design.widget.TabLayout        android:layout_width="match_parent"        android:layout_height="50dp"        android:id="@+id/tablayout">    </android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:id="@+id/f1viewpager">    </android.support.v4.view.ViewPager></LinearLayout>


OK完成...






原创粉丝点击