这个是使用CoordinatorLayout + AppBarLayout +ViewPager 实现的
//RecyclerView 快速适配器
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46'
//noinspection GradleCompatible
implementation 'com.android.support:design:28.0.0'
implementation 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar'
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tl="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFF"
android:fitsSystemWindows="true"
app:expanded="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:gravity="center"
android:text="布局1"
android:textSize="30sp"
app:layout_scrollFlags="scroll" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:gravity="center"
android:text="布局2"
android:textSize="30sp"
app:layout_scrollFlags="scroll" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:gravity="center"
android:text="布局3"
android:textSize="30sp"
app:layout_scrollFlags="scroll" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:gravity="center"
android:text="布局4"
android:textSize="30sp"
app:layout_scrollFlags="scroll" />
<com.flyco.tablayout.SlidingTabLayout
android:id="@+id/slidtab"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:background="@color/colorPrimaryDark"
tl:tl_indicator_width="0dp"
tl:tl_tab_space_equal="true"
tl:tl_textSelectColor="#F00"
tl:tl_textUnselectColor="#f0f0f0"
tl:tl_textsize="18sp" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#2196F3"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
注意Fragment 的 布局 最外层一定是 具有滑动机制的 View
public class MainActivity extends AppCompatActivity {
String[] titles={"好的","坏的","烂的"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SlidingTabLayout slidtab = findViewById(R.id.slidtab);
ViewPager vp = findViewById(R.id.vp);
ArrayList<Fragment> fragmentList =new ArrayList<>();
BlankFragment blankFragment1 = new BlankFragment();
BlankFragment blankFragment2 = new BlankFragment();
BlankFragment blankFragment3 = new BlankFragment();
fragmentList.add(blankFragment1);
fragmentList.add(blankFragment2);
fragmentList.add(blankFragment3);
slidtab.setViewPager(vp,titles,this,fragmentList);
}
}
直接换成ViewPager+NestScrollview
首先是 布局
scroll_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="60sp"
android:text="我是巫妖王唔哈哈哈哈啊哈哈哈,我是巫妖王唔哈哈哈哈啊哈哈哈,我是巫妖王唔哈哈哈哈啊哈哈哈" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
public class MyPageAdapter extends PagerAdapter {
private List<String> list;
public MyPageAdapter(List<String> list) {
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
Context context = container.getContext();
View inflate = View.inflate(context, R.layout.scroll_view, null);
TextView tv = inflate.findViewById(R.id.tv);
tv.setText(list.get(position));
container.addView(inflate);
return inflate;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
public class MainActivity extends AppCompatActivity {
String[] titles={"好的","坏的","烂的"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SlidingTabLayout slidtab = findViewById(R.id.slidtab);
ViewPager vp = findViewById(R.id.vp);
ArrayList<Fragment> fragmentList =new ArrayList<>();
BlankFragment blankFragment1 = new BlankFragment();
BlankFragment blankFragment2 = new BlankFragment();
BlankFragment blankFragment3 = new BlankFragment();
List<String> stringList =new ArrayList<>();
stringList.add("我是数据111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111");
stringList.add("我是数据222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222");
stringList.add("我是数据333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333");
fragmentList.add(blankFragment1);
fragmentList.add(blankFragment2);
fragmentList.add(blankFragment3);
MyPageAdapter myPageAdapter = new MyPageAdapter(stringList);
vp.setAdapter(myPageAdapter);
slidtab.setViewPager(vp,titles);
}
}