Android中控制和防止Scrollview自动下移的方法

来源:爱站网时间:2020-10-21编辑:网友分享
我们在浏览很多程序的时候都会把它滚动到底部,但是这个在程序开发中要怎么操作呢?这通常让程序员脑壳痛,本文是爱站技术频道小编介绍的Android中控制和防止Scrollview自动下移的方法,相信有一点的学习价值。

我们在浏览很多程序的时候都会把它滚动到底部,但是这个在程序开发中要怎么操作呢?这通常让程序员脑壳痛,本文是爱站技术频道小编介绍的Android中控制和防止Scrollview自动下移的方法,相信有一点的学习价值。

一、Android 控制ScrollView滚动到底部

在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等,

这里有两种办法,第一种,使用scrollTo():

public static void scrollToBottom(final View scroll, final View inner) { 
 
Handler mHandler = new Handler(); 
 
mHandler.post(new Runnable() { 
public void run() { 
if (scroll == null || inner == null) { 
return; 
} 
int offset = inner.getMeasuredHeight() - scroll.getHeight(); 
if (offset 

第一种实现相对比较麻烦,更推荐使用第二种方式,使用fullScrol()

下面我们看一下这个函数:

  • scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部
  • scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部

需要注意的是:该方法不能直接被调用

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

应该通过handler在新线程中更新

handler.post(new Runnable() { 
 @Override 
 public void run() { 
  scrollView.fullScroll(ScrollView.FOCUS_DOWN); 
 } 
}); 

二、禁止ScrollView自动滑动到底部

但有的时候能我们又需要禁止ScrollView自动滑动到底部,以下是解决方法:

具体表现

ScrollView 嵌套 GridView 、ListView等类似的控件时,当从网络上获取数据时刷新界面,此事发生的情况是: ScrollView 自动滑到屏幕的最低端,具体来说时滑动展示数据最后一条的位置,如果此时进行下拉刷新,也会出现布局显示不合理的状况。

为何如此

childView 有获取焦点的能力

由于该 childView 超过屏幕大小,并且有获取焦点的能力,所以造成了该问题。由于不能改变其大小,只能阻止其获取焦点。基本思路有,取消它获取焦点的能力,让ScrovView截获它的焦点等。

如何解决

让 childView 的焦点被截获

具体方案

ScrollView 下的 LinearLayout 中加了android:descendantFocusability="blocksDescendants"

以上就是爱站技术频道小编为大家述说的Android中控制和防止Scrollview自动下移的方法,如果大家有兴趣的话,可以收藏js.aizhan.com学习,这里将为大家提供更多的专业知识。

上一篇:高jar包版本怎样对Android进行修改

下一篇:Android创造炫酷进度栏的操作

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载