ScrollView当显示超出当前页面时自动移动到最底端
来源:互联网 发布:ssh端口 windows 编辑:程序博客网 时间:2024/04/28 17:16
卷轴视图(ScrollView)是指当拥有很多内容,一屏显示不完时,需要通过滚动来显示视图。比如在做一个阅读器的时候,文章很长,一页显示不完,那么就需要使用卷轴视图来滚动显示下一页。
在Android,一个单独的TextView是无法滚动的,需要放在一个ScrollView中。ScrollView提供了一系列的函数,其中fullScroll用来实现home和end键的功能,也就是滚动到顶部和底部。
但是,如果在TextView的append后面马上调用fullScroll,会发现无法滚动到真正的底部,这是因为Android下很多(如果不是全部的话)函数都是基于消息的,用消息队列来保证同步,所以函数调用多数是异步操作的。当TextView调用了append会,并不等text显示出来,而是把text的添加到消息队列之后立刻返回,fullScroll被调用的时候,text可能还没有显示,自然无法滚动到正确的位置。
解决的方法其实也很简单,使用post:
Android将ScrollView移动到最底部
scrollTo方法可以调整view的显示位置。
在需要的地方调用以下方法即可。
scroll表示外层的view,inner表示内层的view,其余内容都在inner里。
注意,方法中开一个新线程是必要的。
否则在数据更新导致换行时getMeasuredHeight方法并不是最新的高度。
- 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);
- }
- }
- };
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外层为 scrollmHandler.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);
- }
- });
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);
- }
- });
- }
- ScrollView当显示超出当前页面时自动移动到最底端
- ScrollView当显示超出当前页面时自动移动到最底端
- ScrollView当显示超出当前页面时自动移动到最底端
- ScrollView当显示超出当前页面时自动移动到最底端
- android开发中 ScrollView当显示超出当前页面时自动移动到最底端
- ScrollView当显示超出当前页面时自动移动到最底端
- ScrollView自动移动到最底端
- Scrollview滑动到最底端加载数据
- 移动端,当滚动到最底端的时候,无限加载,怎么实现的?
- Android ScollView移动到最底端
- Android ScollView移动到最底端
- 滑到页面底端自动加载更多
- 当聊天室的内容超出页面范围时, 如何让页面刷新后 显示最下面的内容
- 当页面内容溢出或超出边界时显示省略号
- 页面滚动动态加载数据,页面下拉自动加载内容 ,滚动条滚动到最底端加载数据
- JQuery实现滚动到页面底端时自动加载更多信息
- 滑动到页面底端自动加载下一页方法
- ScrollView滑动到最底端或者最顶端再加载数据
- 框架session丢失(frameset)
- 用Ogre固定渲染管线实现火炬之光X-RAY效果 .
- spring的依赖注入
- MFC 修改 STATIC控件颜色,字体颜色
- 将STM32的TIM作为普通定时器的方法
- ScrollView当显示超出当前页面时自动移动到最底端
- qt整合全文检索功能(1)中文分词以及获得词频
- div 与 tr td table 嵌套关系
- C# 怎么控制pdf打开是的缩放比例?
- 让两个HorizontalScrollView联动
- 部分Dell 740 不支持 Xen Server?
- 用有序链表实现集合
- Oracle存储过程入门
- JAVA获取当前年的第一天和最后一天