文档章节

Android View中滚动相关

okker
 okker
发布于 2013/12/30 15:46
字数 748
阅读 983
收藏 18

##方法

  • scrollTo: (内容的左上角)达到某个地点
  • scrollBy: 根据当前位置,再移动多少

##属性:

  • mScrollX, 以下是文档解释

The offset, in pixels, by which the content of this view is scrolled horizontally.

  • mScrollY, 以下是文档解释

The offset, in pixels, by which the content of this view is scrolled vertically.

网上有很多blog翻译,就是简单的说是偏移量,但是没有具体的说相对哪个坐标的偏移量或者是哪个点的偏移量;

我的mScrollX/mScrollY的理解是:

当View水平滚动完成之后,此View内容的左边相对于View容器本身左边的偏移量;同理竖直方向也是;
当View竖直滚动完成之后,此View内容的上边相对于View容器本身上边的偏移量;

所有的滚动都是针对于View 里面的内容;

以下是例子

布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:orientation="vertical"
android:layout_height="fill_parent" >

<HorizontalScrollView
    android:background="#f888"
    android:id="@+id/sv"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin" >

        <Button
            android:layout_width="300dp"
             android:onClick="scrollX"
            android:layout_height="wrap_content"
            android:background="#ff00"
            android:text="水平移动" />
        <Button
            android:onClick="scrollX"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:background="#f0f0"
            android:text="水平移动" />
        <Button
            android:onClick="scrollX"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:background="#f00f"
            android:text="水平移动" />
          <Button
            android:onClick="scrollX"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:background="#ff0f"
            android:text="水平移动" />
            <Button
            android:onClick="scrollX"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:background="#fff0"
            android:text="水平移动" />
              <Button
            android:onClick="scrollX"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:background="#f0ff"
            android:text="水平移动" />
    </LinearLayout>
</HorizontalScrollView>

<ScrollView
    android:id="@+id/sv2"
    android:layout_width="fill_parent"
    android:background="#fccc"
    android:layout_height="wrap_content"
    android:layout_weight="1" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="3600px"
        android:orientation="vertical"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingBottom="1200px"
        tools:context=".MainActivity" >
        <Button
            android:background="#ff00"
            android:layout_width="wrap_content"
            android:layout_height="300px"
              android:onClick="scrollY"
            android:text="垂直移动" />
        <Button
            android:background="#f0f0"
            android:layout_width="wrap_content"
            android:layout_height="300px"
            android:onClick="scrollY"
            android:text="垂直移动" />
          <Button
            android:background="#f00f"
            android:layout_width="wrap_content"
            android:layout_height="300px"
            android:onClick="scrollY"
            android:text="垂直移动" />
           <Button
            android:background="#f0ff"
            android:layout_width="wrap_content"
            android:layout_height="300px"
            android:onClick="scrollY"
            android:text="垂直移动" />
            <Button
            android:background="#ff0f"
            android:layout_width="wrap_content"
            android:layout_height="300px"
            android:onClick="scrollY"
            android:text="垂直移动" />
             <Button
            android:background="#fff0"
            android:layout_width="wrap_content"
            android:layout_height="300px"
            android:onClick="scrollY"
            android:text="垂直移动" />
    </LinearLayout>
</ScrollView>

</LinearLayout>

主要Activity代码

    public void   scrollY(View view){
	/**
	 *  当scrollBy的Y为负:ScrollView中的内容向下移动
	 *  当scrollBy的Y为正:....................................... 上移动
	 */
	svY.scrollBy(0, 300); // 内容向上走
	System.out.println("YY: "+svY.getScrollY());
}

public void   scrollX(View view){
	/**
	 * X为负: 右移动
	 * X为正:左移动
	 */
	svX.scrollBy(300, 0);// 内容向左走
	System.out.println("XX: "+svX.getScrollX());
}

效果图

###水平滚动图 http://static.oschina.net/uploads/space/2013/1230/155309_Fv4S_115541.gif

竖直滚动图

http://static.oschina.net/uploads/space/2013/1230/155844_DZrx_115541.gif

从效果和图片来看总结 scrollBy(x,y )

  • 当x为正的时候,view中的内容往左边移动,负的时候往右边移动
  • 但y为正的时候,view中的内容网上移动,负的时候往下移动

总结一句话:正负,上下,左右;

© 著作权归作者所有

上一篇: 函数式编程
下一篇: 解码器
okker
粉丝 8
博文 37
码字总数 18977
作品 0
东城
程序员
私信 提问
加载中

评论(2)

okker
okker

引用来自“皓泽”的评论

谢谢

0, 共勉。。
皓泽
皓泽
谢谢
TextView滚动功能的实现

滚动条大家肯定不陌生的,当然这里说的不是ScrollView,在很多的时候需要一个TextView来显示很多内容,但是内容太多了超过了TextView的显示范围,这个时候就需要TextView里面的内容滚动起来。...

Koon.LY
2012/05/27
0
0
Android View.OnTouchListener 的子类

这是我的原创文章,原文地址:zhengxiaopeng.com/2015/04/26/Android-View-OnTouchListener-的子类 如下是几个实现了 OnTouchListener 接口的子类,OnTouchListener 我们是再熟悉不过了,在 ...

Rocko
2015/05/13
0
0
Android学习之Textview的一些属性解释

delia 动态改变控件的方法 1.声明控件参数获取的对象 LinearLayout.LayoutParams linear = (LayoutParams) view.getLayoutParams(); 2.设置控件参数,如宽度: linear.width = 10; 3.使得设...

程序袁_绪龙
2014/09/25
0
0
在Android中使用Notification进行提示

用惯了Android的人在刚拿到iPhone的时候,总是会习惯性的用手指从状态栏往下拖一下,这都是给Notification闹的。 不过Notification也确实是1个不错的提示工具,不干扰正常的操作,事后还可以...

鉴客
2011/12/27
2.3K
0
Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17539199),请尊重他人的辛勤劳动成果,谢谢! 我在上一篇文章中Android 带你从源码的角度解析Scrol...

程序袁_绪龙
2015/08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在阿里云ecs服务器(linux之centos系统)安装调试nginx

购买阿里云ecs服务器实例 由于这里只是测试,我们就随便买一个(当然我就选最便宜的了,这里的抢占式实例测试完可以直接释放) 选择centos7.6镜像 点击下一步:网络和安全组 接下来选中开通h...

祖达
昨天
0
0
【阴阳师】真蛇10层记录

蛇切黑体系 追月神 散件一速,速度越高越好(220+) 镰鼬 招财二速,速度211以上; 山兔 火灵三速,速度180-200均可; 丑女 心眼四速,速度170左右即可; 大蛇 蚌精暴击套。速度高于阴阳师即...

Areya
昨天
4
0
js动态设置元素高度

this.$refs.xxx.style.height= this.contentHeight; 元素需要绑定

Carbenson
昨天
2
0
今天的学习

今天学到了ci框架中的查询语句的where条件语句: 1、$this->db->select('')->from('')->where('id = ??')->get()->result_array();2、$this->db->select('')->from('')->where('id', '??'......

墨冥
昨天
2
0
MySQL在高并发下的订单撮合、系统使用、共享锁与排他锁保证数据一致性

前序 距离上次择文发表,两月余久。2018年也即将要结束了,目前的工作依然是与区块链应用相关的,也很荣幸在9月初受邀签约出版暂名为《区块链以太坊DApp实战开发》一书,预计在明年年初出版。...

我最喜欢三大框架
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部