ViewPager和TabLayOut

    xiaoxiao2022-07-07  209

    xml文件:

    <?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" tools:context=".MainActivity"> <android.support.design.widget.TabLayout android:id="@+id/table" android:layout_weight="2" android:layout_width="match_parent" android:layout_height="0dp" app:tabTextColor="@color/design_default_color_primary" app:tabSelectedTextColor="@color/colorAccent" app:tabMode="scrollable" > </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_above="@+id/liner" android:layout_weight="7" android:layout_width="match_parent" android:layout_height="0dp"> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/liner" android:layout_alignParentBottom="true" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp" android:orientation="horizontal" > <RadioGroup android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <RadioButton android:id="@+id/o1" android:layout_width="60dp" android:layout_height="60dp" android:background="@drawable/radiobutton" android:button="@null" android:onClick="one" /> <RadioButton android:id="@+id/o2" android:layout_width="60dp" android:layout_height="60dp" android:background="@drawable/radiobutton" android:onClick="two" android:button="@null" android:layout_marginLeft="10dp" /> </RadioGroup> </LinearLayout> </LinearLayout>

    主类

    package com.example.part_thirteen; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.CompoundButton; import android.widget.RadioButton; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { ViewPager viewPager; ArrayList<Fragment> fragments=new ArrayList<>(); ArrayList<String>titles=new ArrayList<>(); FragmentManager manager=getSupportFragmentManager(); RadioButton r1; RadioButton r2; TabLayout tabLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager=findViewById(R.id.view_pager); r1 = findViewById(R.id.o1); r2= findViewById(R.id.o2); tabLayout=findViewById(R.id.table); final Frag_one frag_one = new Frag_one(); final Frag_two frag_two = new Frag_two(); fragments.add(frag_one); fragments.add(frag_two); titles.add("选项1"); titles.add("选项2"); MyFragAdapter myFragAdapter = new MyFragAdapter(manager, fragments,titles); viewPager.setAdapter(myFragAdapter); tabLayout.setupWithViewPager(viewPager); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i1) { } @Override public void onPageSelected(int i) { if(i==1){ r1.setSelected(true); }else{ r2.setSelected(true); } } @Override public void onPageScrollStateChanged(int i) { } }); r1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ viewPager.setCurrentItem(0); } } }); r2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ viewPager.setCurrentItem(1); } } }); } public void one(View view){ } public void two(View view){ } }

    自定义适配器继承FragmentPagerAdapter

    package com.example.part_thirteen; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.ArrayList; class MyFragAdapter extends FragmentPagerAdapter { ArrayList<Fragment> fragments = new ArrayList<>(); ArrayList<String> arrayList; public MyFragAdapter(FragmentManager fm, ArrayList<Fragment> fragments, ArrayList<String> arrayList) { super(fm); this.fragments = fragments; this.arrayList = arrayList; } @Override public Fragment getItem(int i) { return fragments.get(i); } @Override public int getCount() { return fragments.size(); } @Nullable @Override public CharSequence getPageTitle(int position) { return arrayList.get(position); } }

    Frag_one1

    import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Frag_one extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.one,container,false); } }

    Frag_two

    package com.example.part_thirteen; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Frag_two extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.two,container,false); } }

    选择器:

    在drawable xml文件里面写选择器

    <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/two" ></item> <item android:drawable="@drawable/one"></item> </selector>

    实现效果:

    可以滑动,点击切换颜色

    最新回复(0)