效果:
1、首先创建一个自带navigation的项目
2、在MainActivity里添加下列代码
(1)定义tablayout和viewpager
(1)fragment的集合以及自定义fragment和动态添加的fragment,tablayout,viewpager。
(2)viewpager适配器,构造方法设置数据源,使tablayout和viewpager一一对应并实现联动。
*:addview和myview的顺序区别在于先后显示哪个fragemnt,由于我数组里面是先定义的是自定义添加控件,一一对应则序号1。
List<Fragment> listFragment = new ArrayList<>();//viewpager中的fragment集合 MyViewFragment myViewFragment = new MyViewFragment(); listFragment.add(myViewFragment);//与上面的红圈1对应 AddViewFragment addViewFragment = new AddViewFragment(); listFragment.add(addViewFragment);//与上面的红圈2对应 tabLayout = (TabLayout) findViewById(R.id.tablayout); viewPager = (ViewPager) findViewById(R.id.viewpager); // ViewPagerAdapter mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),tabTitle,listFragment); //通过构造方法设置adapter的数据源 viewPager.setAdapter(mViewPagerAdapter); tabLayout.setupWithViewPager(viewPager);
3、建立两个fragment:AddviewFragment和MyViewFragment。
AddviewFragment:
(1)这里的i是全局变量,就是用来控制我每添加一个button的,因为后面有删除,为了使其向后逐一删除。
public class AddViewFragment extends Fragment { public AddViewFragment() { // Required empty public constructor } private LinearLayout layout; private int i =0; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragmenti View inflate = inflater.inflate(R.layout.fragment_add_view, container, false); layout = (LinearLayout) inflate.findViewById(R.id.addlayout); Button addButton = (Button) inflate.findViewById(R.id.add_button); Button removeButton = (Button) inflate.findViewById(R.id.remove_button); Button button = new Button(getContext()); button.setText("button"); button.setWidth(ViewGroup.LayoutParams.MATCH_PARENT); layout.addView(button); addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { i++; final Button btn3 = new Button(getContext()); layout.addView(btn3); btn3.setId(i); btn3.setText("Button"+i); btn3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getContext(), btn3.getText().toString(), Toast.LENGTH_LONG).show(); } }); } }); removeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(i<=0){ Toast.makeText(getContext(), "没有可以删除的按钮", Toast.LENGTH_LONG).show(); } else { layout.removeView(layout.findViewById(i)); i--; } } }); return inflate; }
MyViewFragment:
public class MyViewFragment extends Fragment { public MyViewFragment() { // Required empty public constructor } @Override