效果图:

- 有两个相同吸顶的View
- viewA在ScrollView中
- viewB与ScrollView同级
- 根据ScrollView滑动距离判断同级的viewB 是否显示
- 当滑动的距离大于viewA到顶部的距离,viewB就显示,反之隐藏
xml代码
<?xml version="1.0" encoding="utf-8"?/>
<com.yechaoa.stickscrollview.MyScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_top_view"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@color/colorPrimary"
android:gravity="center"
android:padding="20dp"
android:text="内容区"
android:textColor="#fff"
android:textSize="20sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:gravity="center"
android:padding="20dp"
android:text="@string/app_name"
android:textColor="#fff"
android:textSize="20sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="800dp"
android:background="@color/colorPrimary"
android:gravity="center"
android:padding="20dp"
android:text="内容区"
android:textColor="#fff"
android:textSize="20sp"/>
</ LinearLayout>;
</com.yechaoa.stickscrollview.MyScrollView>;
<TextView
android:id="@+id/tv_stick_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:gravity="center"
android:padding="20dp"
android:text="@string/app_name"
android:textColor="#fff"
android:textSize="20sp"
android:visibility="gone"/>
</RelativeLayout>
java代码
mTopView = findViewById(R.id.tv_top_view); mStickView = findViewById(R.id.tv_stick_view); MyScrollView mScrollView = findViewById(R.id.scrollView);mScrollView.setScrollViewListener(new MyScrollView.ScrollViewListener() { @Override public void onScrollChanged(MyScrollView scrollView, int x, int y, int oldx, int oldy) { if (y > mTopView.getHeight()) mStickView.setVisibility(View.VISIBLE); else mStickView.setVisibility(View.GONE); } });
y 就是ScrollView 滑动的距离
点击到顶部:
mScrollView.scrollTo(0, mTopView.getHeight());
带滑动监听的ScrollView
package com.yechaoa.stickscrollview; import android.content.Context; import android.util.AttributeSet; import android.widget.ScrollView; /** * Created by yechao on 2019/1/23. * Describe : 带滑动监听的scrollview */ public class MyScrollView extends ScrollView { public interface ScrollViewListener { void onScrollChanged(MyScrollView scrollView, int x, int y, int oldx, int oldy); } private ScrollViewListener scrollViewListener = null; public MyScrollView(Context context) { super(context); } public MyScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public void setScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } @Override protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (scrollViewListener != null) { scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } }
2166

被折叠的 条评论
为什么被折叠?



