tablayout动态添加fragment

来源:互联网 发布:小班美工区域观察记录 编辑:程序博客网 时间:2024/06/05 00:01

一个fragment通过tablayout的数量来静态创建

效果图(这里就一个fragment)

       

1导入依赖

   compile 'com.android.support:design:26.0.0-alpha1'
2main布局文件

<android.support.design.widget.TabLayout        android:id="@+id/tabLayout"        android:layout_width="match_parent"        android:layout_height="wrap_content"    <!-- 下方滚动的下划线颜色  -->    app:tabIndicatorColor="#33aa22"    <!-- 下方指示条的高度  -->    app:tabIndicatorHeight="5dp"    <!-- tab被选中后,文字的颜色  -->    app:tabSelectedTextColor="#33aa22"    <!-- tab中字体的颜色  -->    app:tabTextColor="#33aa22"    <!-- tab中设置横向scroll  -->    app:tabMode="scrollable"    />    <android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/viewPage"        ></android.support.v4.view.ViewPager>
3MainActivity
import android.os.Bundle;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.support.v7.app.AppCompatActivity;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private TabLayout tabLayout;    private ViewPager viewPage;    private List<Fragment> frags;    private List<String> titles;    private Fragment[] f;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        viewPage= (ViewPager) findViewById(R.id.viewPage);        tabLayout= (TabLayout) findViewById(R.id.tabLayout);        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);        tabLayout.setTabMode(TabLayout.MODE_FIXED);        frags=new ArrayList<>();        frags.add(new Fragment1());        titles=new ArrayList<>();        titles.add("标题1");        titles.add("标题2");        titles.add("标题3");        titles.add("标题4");        titles.add("标题5");        tabLayout.setupWithViewPager(viewPage);        Myadapter adapter=new Myadapter(getSupportFragmentManager());        //联动        viewPage.setAdapter(adapter);    }    //适配器    class Myadapter extends FragmentPagerAdapter {        public Myadapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return getfragment(position);        }        @Override        public int getCount() {            return titles.size();        }        @Override        public CharSequence getPageTitle(int position) {            return titles.get(position);        }    }    //动态创建Fragment的方法    public Fragment  getfragment(int position){        f=new Fragment[5];        Fragment fg = f[position];        if (fg == null) {            fg = Fragment1.getiniturl(position+"");            f[position] = fg;        }        return fg;    }}
4fragment

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 android.widget.TextView;import static com.example.dell.myapplication.R.layout.item;/** * Created by dell on 2017/11/8. */public class Fragment1 extends Fragment{    private View v;    private TextView tv;    //回调用来接收参数    public static Fragment1 getiniturl(String gc_id) {        Fragment1 twoFragment = new Fragment1();        Bundle bundle = new Bundle();        bundle.putString("gc_id", gc_id);        twoFragment.setArguments(bundle);        return twoFragment;    }        @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        v=View.inflate(getActivity(), item,null);            //获取参数        String  gc_id = getArguments().getString("gc_id");            tv=v.findViewById(R.id.tv);            tv.setText("标题"+gc_id);            return v;    }}

5创建fragment布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="sssssssssssssssss"        android:id="@+id/tv"        /></LinearLayout>

这样就可以实现了
相关博客
http://blog.csdn.net/qq_39734239/article/details/77978394




原创粉丝点击