如何获取scrollview中一个控件的相对位置[复制链接]

各位:
       比方说我们设定scrollview高度200,我们里面放如一个Imageview控件高度400,那么我们的Imageview便可以滑动查看。
请问有没有办法可以判断出Imageview目前滑动到那个位置?
       如果Imageview是一个刻度的坐标,那么我们在Scrollview上方放置一个红色刻度,滑动Imageview获取Imageview相对位置
从而设计成一个可波动的尺子。
       请大虾指导指导。。。

allow.xuweibin 39174查看 · 6回复 · 2014-1-21 14:14 有用(0
共6个回答
liu321jie 2014-1-21 14:14 回复
scrollview,Imageview高度都是固定的,那么就可以获取他的坐标,根据坐标位置来判断了啊
allow.xuweibin 2014-1-21 15:16 回复
liu321jie 发表于 2014-1-21 15:05
scrollview,Imageview高度都是固定的,那么就可以获取他的坐标,根据坐标位置来判断了啊 ...

我试过 scrollview get的各种属性 跟 Imageview get的各种属性,当我scrollview里面只有一个Imageview时候,这些属性值都没有产生变化。当时已经在滚动,打印出来都是恒定值。。无论是 scrollY 还是 getPivotY()..
然后观察到,滚动条位置是在不断变化,也就是,我能获取滚动条位置便能够准确知道我当前的位置。
请问有办法获取滚动条的位置吗?望回答
liu321jie 2014-1-21 15:29 回复
allow.xuweibin 发表于 2014-1-21 15:16
我试过 scrollview get的各种属性 跟 Imageview get的各种属性,当我scrollview里面只有一个Imageview时 ...

http://bbs.csdn.net/topics/360027237
http://blog.csdn.net/listening_music/article/details/7193439
试试这两个对你又没有帮助
allow.xuweibin 2014-1-21 16:20 回复
liu321jie 发表于 2014-1-21 15:29
http://bbs.csdn.net/topics/360027237
http://blog.csdn.net/listening_music/article/details/7193439
...

根据你上一次回答得到启发,使用以下解决问题:
int[] location = new int[2];
heiImageView.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
Height=heiImageView.getHeight();
当启动完成后,使用int start = location[1];可得到起始的坐标,在获得Height=heiImageView.getHeight();
假设我有180个刻度值,每刻度1cm,
current=location[1];//当前坐标
int count;//移动刻度
活动刻度=180*(start-current)/Height 得出滑动刻度,
在根据起始刻度值如 55cm
也就是当前显示值为 55+count ;
如果单独使用onTouch来计算,对于scrollView来说是不行的,因为手一拿起来,ontouch无效,而刻度还在活动,对UI显示不佳,所以使用了一个 handle作为i闭环延时循环,50ms执行以便,这就实时完美显示。
Thanks a lot

liu321jie 2014-1-21 16:45 回复
allow.xuweibin 发表于 2014-1-21 16:20
根据你上一次回答得到启发,使用以下解决问题:
int[] location = new int[2];
heiImageView.getLocati ...

解决了,然后还能贴出来为大家服务,这种精神值得表扬啊,加分!
xsg2357 2018-10-26 15:42 回复
allow.xuweibin 发表于 2014-1-21 16:20
根据你上一次回答得到启发,使用以下解决问题:int[]location=newint[2];heiImageView.getLocationOnScreen ...

有源代码没得
需要登入后才可以评论 登录 | 立即注册