TabLayout标题和Fragment联动

来源:互联网 发布:sql两表连接查询 编辑:程序博客网 时间:2024/05/18 01:20

1.导包design

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


2.主布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="comqq.example.hasee.myapplication.MainActivity"    android:orientation="horizontal">    <android.support.design.widget.TabLayout        android:layout_width="match_parent"        android:layout_height="60dp"        android:id="@+id/tl"        android:background="#fff342"        app:tabIndicatorColor="@color/colorAccent"        app:tabIndicatorHeight="4dp"        //点击选中时文字改变颜色        app:tabSelectedTextColor="@color/colorAccent"        app:tabTextColor="#000000">    </android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="match_parent"></android.support.v4.view.ViewPager></LinearLayout>






3.Fragment代码

public class BlankFragment extends Fragment {    public BlankFragment() {    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        View inflate = inflater.inflate(R.layout.fragment_blank, container, false);        TextView tv1 = inflate.findViewById(R.id.tv1);        String string = getArguments().getString("key");        tv1.setText(string);        return inflate;    }}





4.Fragment布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="comqq.example.hasee.myapplication.BlankFragment">    <!-- TODO: Update blank fragment layout -->    <TextView        android:id="@+id/tv1"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:text="@string/hello_blank_fragment" /></FrameLayout>




5.主函数

public class MainActivity extends AppCompatActivity {    private ViewPager vp;    private TabLayout tl;    private ArrayList<Fragment> arr;    private ArrayList<String> arr2;    private spq sp;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        vp= (ViewPager) findViewById(R.id.vp);        tl= (TabLayout) findViewById(R.id.tl);        arr=new ArrayList<>();        arr2=new ArrayList<>();        for (int i = 0; i < 10; i++) {            BlankFragment blan = new BlankFragment();            Bundle bundle = new Bundle();            bundle.putString("key","第"+i+"页");            blan.setArguments(bundle);            arr.add(blan);        }         sp = new spq(getSupportFragmentManager(), arr, arr2);        vp.setAdapter(sp);        tl.setupWithViewPager(vp);//        设置tablayout为滚动模式        tl.setTabMode(TabLayout.MODE_SCROLLABLE); }    public void start(View view) {        //        删除tablayout对应的指定标签//        tablayout.removeTabAt(4);        //        按钮点击事件,点击删除viewpager的某一个页面        sp.removePos(4);    }}






6.Fragment适配器

public class spq extends FragmentPagerAdapter {    private ArrayList<Fragment> arr;    private ArrayList<String> arr2;    public spq(FragmentManager fm, ArrayList<Fragment> arr, ArrayList<String> arr2) {        super(fm);        this.arr = arr;        this.arr2 = arr2;    }    @Override    public Fragment getItem(int position) {        return arr.get(position);    }    @Override    public int getCount() {        return arr.size();    }        public void removePos(int pos){        arr.remove(pos);        arr2.remove(pos);        this.notifyDataSetChanged();   //数据源发生变化,提醒更新    }    @Override    public CharSequence getPageTitle(int position) {        return arr2.get(position);    }}