我是靠谱客的博主 善良硬币,最近开发中收集的这篇文章主要介绍安卓 ScrollView与NestedScrollView的动态滚动与监听,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019年第一篇博客,今天就介绍下ScrollView常用的两个方法。

在项目中,特别是新项目,UI经常会让我们根据屏幕的滚动展示不同的内容,或者内容太长,点击某个按钮或者触发某个事件,主动滚动到屏幕底部,这时候就需要我们监听ScrollView(我现在都是用NestedScrollView,不过为了打字方便,用ScrollView代替NestedScrollView,这两个处理其实是一样的,哈哈)的滚动事件和主动滚动事件。

因为Android很多函数都是基于消息队列来同步,所以需要一部操作,
addView完之后,不等于马上就会显示,而是在队列中等待处理,虽然很快,但是如果立即调用fullScroll, view可能还没有显示出来,所以会失败,应该通过handler在新线程中更新。

方法很简单直接列出来了,下面是使用代码,有基础的同学一眼就明白。

Handler handler = new Handler();

handler.post(new Runnable() {

@Override

public void run() {

// 滚动到底部

nestedScrollView.fullScroll(ScrollView.FOCUS_DOWN);

滚动到顶部

// nestedScrollView.fullScroll(ScrollView.FOCUS_UP);

}

});

2.监听scrollview滚动,以调整布局

nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {

@Override

public void onScrollChange(NestedScrollView nestedScrollView, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {

if (scrollY > ScreenUtils.dip2px(getActivity(), 182)) {

ivAddHomePage.setVisibility(View.GONE);

ivPullDown.setVisibility(View.GONE);

llCityName.setVisibility(View.GONE);

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) llSearch.getLayoutParams();

params.width = ScreenUtils.dip2px(getActivity(), 300);

params.gravity = Gravity.CENTER;

llSearch.setLayoutParams(params);

 

} else {

ivAddHomePage.setVisibility(View.VISIBLE);

ivPullDown.setVisibility(View.VISIBLE);

llCityName.setVisibility(View.VISIBLE);

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) llSearch.getLayoutParams();

params.width = ScreenUtils.dip2px(getActivity(), 213);

llSearch.setLayoutParams(params);

 

}

}

});

}

最后

以上就是善良硬币为你收集整理的安卓 ScrollView与NestedScrollView的动态滚动与监听的全部内容,希望文章能够帮你解决安卓 ScrollView与NestedScrollView的动态滚动与监听所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部