卷轴视图(ScrollView)是指当拥有很多内容,一屏显示不完时,需要通过滚动来显示视图。比如在做一个阅读器的时候,文章很长,一页显示不完,那么就需要使用卷轴视图来滚动显示下一页。
private ScrollView mScrollView;
private LinearLayout mLayout;
private final Handler mHandler = new Handler();
mScrollView = (ScrollView)findViewById(R.id.scroll);
mLayout = (LinearLayout)findViewById(R.id.linearlayout);//linearlayout外层为 scroll
mHandler.post(mScrollToBottom);
private Runnable mScrollToBottom = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
int off = mLayout.getMeasuredHeight() - mScrollView.getHeight();
if (off > 0) {
mScrollView.scrollTo(0, off);
}
}
};
在Android,一个单独的TextView是无法滚动的,需要放在一个ScrollView中。ScrollView提供了一系列的函数,其中fullScroll用来实现home和end键的功能,也就是滚动到顶部和底部。
但是,如果在TextView的append后面马上调用fullScroll,会发现无法滚动到真正的底部,这是因为Android下很多(如果不是全部的话)函数都是基于消息的,用消息队列来保证同步,所以函数调用多数是异步操作的。当TextView调用了append会,并不等text显示出来,而是把text的添加到消息队列之后立刻返回,fullScroll被调用的时候,text可能还没有显示,自然无法滚动到正确的位置。
解决的方法其实也很简单,使用post:
final ScrollView svResult = (ScrollView) findViewById(R.id.svResult);
svResult.post(new Runnable() {
public void run() {
svResult.fullScroll(ScrollView.FOCUS_DOWN);
}
});
Android将ScrollView移动到最底部
scrollTo方法可以调整view的显示位置。
在需要的地方调用以下方法即可。
scroll表示外层的view,inner表示内层的view,其余内容都在inner里。
注意,方法中开一个新线程是必要的。
否则在数据更新导致换行时getMeasuredHeight方法并不是最新的高度。
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 < 0) {
offset = 0;
}
scroll.scrollTo(0, offset);
}
});
}
分享到:
相关推荐
UIPageControl通常配合ScrollView使用,它像一个小的分页指示器,显示当前页面和总页面数。在ScrollView滚动时,我们可以更新UIPageControl的currentPage属性,让用户知道当前显示的是哪一页。在"UIPageControlDemo...
为了实现循环滚动,当最后一张图片滚动完毕时,我们需要更新contentOffset,使其回到第一张图片的位置,同时更新ScrollView的显示,将最后一张图片移动到最左侧,第一张图片移动到最右侧,从而达到视觉上的无缝切换...
本文将深入探讨如何实现ScrollView的自动滑动功能,特别是在创建"关于我们"页面时,如何让ScrollView自动滑动到底部,以及相关的编程技术和注意事项。 一、ScrollView基础知识 ScrollView是Android提供的一个可滚动...
当我们需要实现"ScrollView自动翻页"的功能时,这通常涉及到UIScrollView的子类,如UIPageViewController或者自定义的滚动视图布局。这个功能常见于电子书、相册应用或者轮播图组件等,它能为用户提供连续且流畅的...
有时,我们可能需要监听ScrollView的滑动事件,尤其是当ScrollView滑动到最左边或最右边时,可能需要执行特定的操作,比如加载更多数据或者显示指示器。本篇文章将详细介绍如何实现这一功能。 首先,我们需要理解...
在Android中,当TextView的内容超过屏幕可见范围时,如果需要用户滚动查看所有内容,可以使用ScrollView作为父容器包裹TextView。ScrollView允许其子视图进行垂直滚动,即使子视图的大小超过了ScrollView的大小。...
// 如果是循环滚动,当到达最后一项时,重置到第一项 scrollView.contentOffset = CGPoint.zero } } ``` 为了实现无缝循环滚动,我们需要处理好内容的边界情况。当`contentOffset`达到最大值时,我们需要将其...
本主题探讨的是如何在ScrollView中实现一个具有页面滑动功能,同时每个页面还能进行单独的放大缩小操作,当滑动到下一个页面再返回时,原页面能自动恢复到原来的大小。此外,还增加了双击屏幕实现快速放大的功能。 ...
当 `bounce` 设置为 `true` 时,用户滚动到内容的边缘时,ScrollView 会有一个回弹效果。 6. **scrollEvent**:你可以监听 `scroll` 事件来获取用户滚动时的信息,例如滚动位置。这对于创建动态效果或实现特定功能...
ScrollView动态加载最新版加动态锁定当前页面!!!!
3. 当需要停止滚动时,使用Handler.removeCallbacks()来移除Runnable: ```java handler.removeCallbacks(mScrollRunnable); ``` 除了基本的自动滚动,我们还可以根据需求实现更复杂的滚动逻辑,例如根据用户点击...
显示dialog, Scrollview自动滚动
主要核心逻辑就是检测Content节点的RectTransform的localPosX的移动距离然后继承实现OnDrag几个接口来完成拖动再松开自动吸附到具体的位置。具体效果如下 另外说一下有几个ScrollView自带的API需要设置一下,一个事...
2. **设置ScrollView**:在NGUI中,ScrollView的“Clamping”选项应设为“Off”,以便内容超出边界时仍能显示。同时,要确保“Pivot”设置为“Top Left”或“Bottom Left”,这样滚动会更自然。 3. **复制边界元素*...
在这个项目中,我们讨论的是如何结合使用ScrollView和GridView实现左右滑动,并在启动时或点击按钮时自动定位到指定项。 首先,让我们深入理解ScrollView。ScrollView是Android中的一个可滚动视图,它可以包裹任何...
在Android开发中,ScrollView是一个非常常用的布局控件,它允许用户在内容超出屏幕时通过滚动查看更多的信息。本文将深入探讨如何实现一个ScrollView动画滚动到顶部的功能,这在很多应用场景中都非常有用,例如用户...
当用户滚动到特定位置时,更新相关界面的状态,比如更改导航栏的标题或显示相应的订单列表。 5. 自动滚动:在某些情况下,可能需要实现自动滚动到某个子视图,如用户点击导航栏的按钮。这可以通过调用ScrollView的...
当用户滚动时,这些属性会自动更新,使得用户能够查看到ScrollView内的其他部分。 在自动轮播的实现中,我们通常会有一个图片数组,用于存储要展示的图片资源。CJScrollRollView可能是这个项目中的主要类,它负责...
当我们需要实现`UIScrollView`及其子类的自动滚动功能时,通常涉及到一些关键的技术点,以下将详细介绍这些知识点。 ### 1. UIScrollView自动滚动的基本原理 `UIScrollView`的自动滚动主要依赖于其内置的`...
这个代码可以判断ScrollView是否滑动到了最下边或者最上边,同理,HorizontalScrollView也可以判断是否滑动到最右边或者最左边。使用方法就是直接用这个自定义控件并实现里面的OnScrollListener就可以了,会自动复写...