Android 仿京东 淘宝 首页 Tab悬浮

 这个是使用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);


    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值