如何获得scrollview滑动到顶部的滑动位置

> 取得 ScrollView 惯性滑动后的位置
取得 ScrollView 惯性滑动后的位置
spg_stone & &
发布时间: & &
浏览:45 & &
回复:0 & &
悬赏:0.0希赛币
获得 ScrollView 惯性滑动后的位置
  public class ScrollOnTouchListener implements OnTouchListener {
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
scrollX = horizontalScrollView.getScrollX();
changeTextSwicher(scrollX);
detectScrollX();
public void detectScrollX(){
new Handler().postDelayed(new Runnable(){
public void run() {
int tempScrollX = horizontalScrollView.getScrollX();
if(tempScrollX != scrollX) {
scrollX = tempScrollX;
changeTextSwicher(tempScrollX);
Log.e("TAG", "scrollX = " + scrollX);
public void changeTextSwicher(int scroll){
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&【02-08求助】HorizontalScrollView 如何让屏幕显示指定位置_android吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,129,736贴子:
【02-08求助】HorizontalScrollView 如何让屏幕显示指定位置收藏
请教大神:我有一个HorizontalScrollView 每次点击某个按键 动态添加一个view
添加的太多 那些view 就被隐藏在界面外面了我想请问:如何在添加完成后 让ScrollView
滚动到这个新创建的view上
能让这个view显示在主界面上呢?
这个组件我也不会玩呢 楼主插插帮助文档 看有没有对应方法
new Handler().post(new Runnable() {@Overridepublic void run() {hsv.fullScroll(HorizontalScrollView.FOCUS_RIGHT);}});
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或AlexMichel 的BLOG
用户名:AlexMichel
文章数:64
评论数:17
访问量:1147797
注册日期:
阅读量:5863
阅读量:12276
阅读量:380964
阅读量:1073117
51CTO推荐博文
android:scrollbars
&&&&&&&& 设置滚动条显示。none(隐藏),horizontal(水平),vertical(垂直)。
android:scrollbarFadeDuration
设置滚动条淡出效果(从有到慢慢的变淡直至消失)时间,以毫秒为单位。Android2.2中滚动条滚动完之后会消失,再滚动又会出来,在1.5、1.6版本里面会一直显示着。
android:scrollbarSize
设置滚动条的宽度。
android:scrollbarStyle
设置滚动条的风格和位置。设置值:insideOverlay、insideInset、outsideOverlay、outsideInset
android:scrollbarThumbHorizontal
设置水平滚动条的drawable。 & &&
android:scrollbarThumbVertical
设置垂直滚动条的drawable.
android:scrollbarTrackHorizontal
设置水平滚动条背景(轨迹)的色drawable
android:soundEffectsEnabled
设置点击或触摸时是否有声音效果
了这篇文章
类别:未分类┆阅读(0)┆评论(0)Android ScrollView向上滑动控件顶部悬浮效果实现 - 推酷
Android ScrollView向上滑动控件顶部悬浮效果实现
本文参考了:《上滑停靠顶端的悬浮框》的代码,在此表示感谢。【上滑停靠顶端的悬浮框】里的实现方法是使用两个控件,滑动时,监听ScrollView的滚动Y值,从而通过对两个控件的显示隐藏来实现控件的顶部悬浮。但是实际应用场景中,有可能需要悬浮的控件里面的内容是比较多的,如果通过显示隐藏的方式来实现的话,操作控件里的内容时,需要重复定义两套变量,对控件里的内容进行修改时也是要操作再次,非常麻烦。
本文的方法是通过addView和removeView来实现的。
一、首先让ScrollView实现滚动监听:
package com.willen.topFloatD
import android.content.C
import android.os.H
import android.util.AttributeS
import android.view.MotionE
import android.widget.ScrollV
* ScrollView并没有实现滚动监听,所以我们必须自行实现对ScrollView的监听,
* 我们很自然的想到在onTouchEvent()方法中实现对滚动Y轴进行监听
* ScrollView的滚动Y值进行监听
public class MyScrollView extends ScrollView {
private OnScrollListener onScrollL
* 主要是用在用户手指离开MyScrollView,MyScrollView还在继续滑动,我们用来保存Y的距离,然后做比较
private int lastScrollY;
public MyScrollView(Context context) {
super(context, null);
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs, 0);
public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
* 设置滚动接口
* @param onScrollListener
public void setOnScrollListener(OnScrollListener onScrollListener){
this.onScrollListener = onScrollL
* 用于用户手指离开MyScrollView的时候获取MyScrollView滚动的Y距离,然后回调给onScroll方法中
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
int scrollY = MyScrollView.this.getScrollY();
//此时的距离和记录下的距离不相等,在隔5毫秒给handler发送消息
if(lastScrollY != scrollY){
lastScrollY = scrollY;
handler.sendMessageDelayed(handler.obtainMessage(), 5);
if(onScrollListener != null){
onScrollListener.onScroll(scrollY);
* 重写onTouchEvent, 当用户的手在MyScrollView上面的时候,
* 直接将MyScrollView滑动的Y方向距离回调给onScroll方法中,当用户抬起手的时候,
* MyScrollView可能还在滑动,所以当用户抬起手我们隔5毫秒给handler发送消息,在handler处理
* MyScrollView滑动的距离
public boolean onTouchEvent(MotionEvent ev) {
if(onScrollListener != null){
onScrollListener.onScroll(lastScrollY = this.getScrollY());
switch(ev.getAction()){
case MotionEvent.ACTION_UP:
handler.sendMessageDelayed(handler.obtainMessage(), 20);
return super.onTouchEvent(ev);
* 滚动的回调接口
public interface OnScrollListener{
* 回调方法, 返回MyScrollView滑动的Y方向距离
public void onScroll(int scrollY);
二、定义简单布局
&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:id=&@+id/container&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical& &
&com.willen.topFloatDemo.MyScrollView
android:id=&@+id/myScrollView&
android:layout_width=&match_parent&
android:layout_height=&match_parent& &
&LinearLayout
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:orientation=&vertical& &
&RelativeLayout
android:id=&@+id/rlayout&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:layout_gravity=&center_horizontal& &
android:id=&@+id/tv&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:gravity=&center_vertical&
android:text=&顶部信息\n顶部信息\n顶部信息\n顶部信息&
android:textSize=&40dp& /&
&/RelativeLayout&
&LinearLayout
android:id=&@+id/search02&
android:layout_width=&match_parent&
android:layout_height=&40dip&
android:orientation=&vertical& &
android:id=&@+id/search_edit&
android:layout_width=&match_parent&
android:layout_height=&40dip&
android:background=&@drawable/bg_edittext&
android:hint=&请输入...&
android:padding=&5dip&
android:singleLine=&true&
android:textColorHint=&#AAAAAA&
android:textSize=&15dip& /&
&/LinearLayout&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:gravity=&center_horizontal&
android:text=&测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容&
android:textSize=&40dp& /&
&/LinearLayout&
&/com.willen.topFloatDemo.MyScrollView&
&LinearLayout
android:id=&@+id/search01&
android:layout_width=&match_parent&
android:layout_height=&40dip&
android:orientation=&vertical& &
&/LinearLayout&
&/RelativeLayout&
三、MainActivity
package com.willen.topFloatD
import android.app.A
import android.os.B
import android.widget.EditT
import android.widget.LinearL
import android.widget.RelativeL
import com.willen.topFloatDemo.MyScrollView.OnScrollL
public class MainActivity extends Activity implements OnScrollListener{
private EditText search_
private MyScrollView myScrollV
private int searchLayoutT
LinearLayout search01,search02;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
private void init() {
search_edit = (EditText)findViewById(R.id.search_edit);
myScrollView = (MyScrollView)findViewById(R.id.myScrollView);
search01 = (LinearLayout)findViewById(R.id.search01);
search02 = (LinearLayout)findViewById(R.id.search02);
rlayout = (RelativeLayout)findViewById(R.id.rlayout);
myScrollView.setOnScrollListener(this);
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus){
searchLayoutTop = rlayout.getBottom();//获取searchLayout的顶部位置
//监听滚动Y值变化,通过addView和removeView来实现悬停效果
public void onScroll(int scrollY) {
if(scrollY &= searchLayoutTop){
if (search_edit.getParent()!=search01) {
search02.removeView(search_edit);
search01.addView(search_edit);
if (search_edit.getParent()!=search02) {
search01.removeView(search_edit);
search02.addView(search_edit);
代码中均有注释,应该不用再多解释了。
本文源码下载:
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致}

我要回帖

更多关于 监听scrollview的滑动 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信