导航:首页 > 操作系统 > android滚动顶部

android滚动顶部

发布时间:2023-06-13 03:58:15

1. android 的ListView中怎么判断其内容已滚动到最顶部或者最底部

  1. 可以通过判断流动条的位置得到;

  2. 如果在顶部,第零个item必然可见;

  3. 如果在底部,最大个数减1 item必须可见;

  4. ,具体见代码:

java">listview.setOnScrollListener(newAbsListView.OnScrollListener(){@Override
(AbsListViewview,intscrollState){
switch(scrollState){
//当不滚动时
caseAbsListView.OnScrollListener.SCROLL_STATE_IDLE:
//判断滚动到底部
if(listview.getLastVisiblePosition()==(listview.getCount()-1)){
L.e("滚动到底部");
}
//判断滚动到顶部
if(listview.getFirstVisiblePosition()==0){

}
break;
}
}

@Override
publicvoidonScroll(AbsListViewview,intfirstVisibleItem,intvisibleItemCount,inttotalItemCount){

}
});

2. android listview如何按时加滚动到顶部

listview的一些方法:

1.public
void setSelection (int position)

position位置的item置顶(即position位置的item到listview的最顶端),但是,没有从原来位置到顶端的滑动效果。

2.public
void setSelectionFromTop (int position, int y)

与setSelection 类似。setSelection(position)就是setSelectionFromTop (position,0)

选中position指定的项目,并将所选项置于距离ListView顶端y像素的位置

参数

position 需要选中的项目的索引(从0开始)

y
距离ListView(包括间隙)顶端的位置

3.public
void smoothScrollToPositionFromTop (int position, int
offset)

平滑滚动到指定的适配器位置。 指定位置的视图会滚动到相对顶边偏移 offset 像素的位置显示。
如果无法做到(比如该偏移量会使首尾条目超越列表边缘),会滚动到尽量接近的位置。

参数

position 滚动到的位置

offset 滚动结束时,指定 position 条目距离视图顶部的像素数

当offset=0时,可以把position位置的item置顶,而且带有滑动效果,即会从原来位置轻轻滑动到最顶

端位置。

测试:
可以顺利滚动,返回滚动也很顺利,滑动顺畅

4、public void
smoothScrollToPositionFromTop(int position)

参数:

position 滚动到的位置

带有滑动效果的滚动到指定位置。

如何判断其内容已滚动到最顶部或者最底部看

getListView().setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if(firstVisibleItem==0){
Log.e("log", "滑到顶部");
}
if(visibleItemCount+firstVisibleItem==totalItemCount){
Log.e("log", "滑到底部");
}
}
});

平滑的滚动listview到一个指定位

package com.android.contacts.widget;

import android.content.Context;

import android.util.AttributeSet;

import android.widget.ListView;

public class AutoScrollListView extends ListView {

private static final
float PREFERRED_SELECTION_OFFSET_FROM_TOP = 0.33f;

private int
mRequestedScrollPosition = -1;

private boolean
mSmoothScrollRequested;

public
AutoScrollListView(Context context) {

super(context);

}

public
AutoScrollListView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public
AutoScrollListView(Context context, AttributeSet attrs, int
defStyle) {

super(context, attrs, defStyle);

}

public void
requestPositionToScreen(int position, boolean smoothScroll) {

mRequestedScrollPosition = position;

mSmoothScrollRequested = smoothScroll;

requestLayout();

}

@Override

protected void
layoutChildren() {

super.layoutChildren();

if (mRequestedScrollPosition == -1) {

return;

}

final int position =
mRequestedScrollPosition;

mRequestedScrollPosition = -1;

int firstPosition = getFirstVisiblePosition() +
1;

int lastPosition =
getLastVisiblePosition();

if (position >= firstPosition &&
position <= lastPosition) {

return; //
Already on screen

}

final int offset = (int) (getHeight() *
PREFERRED_SELECTION_OFFSET_FROM_TOP);

if (!mSmoothScrollRequested) {

setSelectionFromTop(position, offset);

// Since
we have changed the scrolling position, we need to redo child
layout

// Calling
"requestLayout" in the middle of a layout pass has no effect,

// so we
call layoutChildren explicitly

super.layoutChildren();

} else {

// We will
first position the list a couple of screens before or after

// the new
selection and then scroll smoothly to it.

int
twoScreens = (lastPosition - firstPosition) * 2;

int
preliminaryPosition;

if
(position < firstPosition) {

preliminaryPosition = position + twoScreens;

if (preliminaryPosition >=
getCount()) {

preliminaryPosition = getCount() - 1;

}

if (preliminaryPosition <
firstPosition) {

setSelection(preliminaryPosition);

super.layoutChildren();

}

} else
{

preliminaryPosition =
position - twoScreens;

if (preliminaryPosition <
0) {

preliminaryPosition = 0;

}

if
(preliminaryPosition > lastPosition) {

setSelection(preliminaryPosition);

super.layoutChildren();

}

}

smoothScrollToPositionFromTop(position, offset);

}

}

}

阅读全文

与android滚动顶部相关的资料

热点内容
php去掉小数后面的0 浏览:952
阿里备案买什么服务器 浏览:261
网络驱动下载到哪个文件夹 浏览:481
达内程序员培训西安 浏览:505
人保送车主惠app上怎么年检 浏览:604
android手机开机密码 浏览:480
linux查看某个进程命令 浏览:529
闲置的腾讯云服务器 浏览:437
rar压缩包mac 浏览:626
php混淆加密工具 浏览:581
java把数字拆分 浏览:464
如何下载svn服务器旧版本 浏览:559
命令与征服4攻略 浏览:914
实数四则运算法则概念 浏览:296
cs16优化命令 浏览:873
Minecraft云服务器免费 浏览:830
png压缩最小 浏览:184
老韩综app怎么看不了了 浏览:229
只有一个程序员的体验 浏览:323
用服务器地址怎么有网 浏览:552