ScrollView详讲

本文详细介绍了Android中的ScrollView,包括其应用场景、注意事项和与其它容器的区别。ScrollView是用于展示超过屏幕内容的容器,允许垂直滚动。在使用时,ScrollView内只能有一个View或ViewGroup,并提供了隐藏滚动条和自定义滚动条样式等属性设置。

ScrollView讲解

 

本章重点

u  ScrollView 应用场景:

u ScrollView 意事项:

 

1.1.1什么是ScrollView

Scrolliew相当于一个布局容器。里面可以放入子控件,由于手机屏幕的宽高有限,所以如果面对组件要显示多组信息的时候,ScrollView(滚动视图)可以有效的安排这些组件,浏览时,可以通过手指的滑动,进行滚屏的操作,这个滚动的方向是垂直方向的,当然也有水平滚动的HorizontalScrollView,通过下图可以看出Scrolliew是ViewGroup的间接子类。ScrollView 和HorizontalScrollView在用法及属性上基本一致,下面只讲述ScrollView。

1.1.2为什么要用ScrollView

    当我们在手机屏幕上要显示的内容超出屏幕的宽度或者高度时,我们可以使用ScrollView来包裹我们要显示的全部内容,这样当内容显示不完全的时,可以通过手指的滑而显示其余内容。

1.1.3  ScrollView与其他容器的区别

    ScrollView的使用方法与Android中几种布局管理器的操作形式类似,唯一不同的是,所有的布局管理器之中,可以包含多个组件,而Scrolliew(滚动视图)里只能有一个View或者ViewGroup,也就是ScrollView容器中只能有一个child。所以Scrolliew(滚动视图)指的就是提供一个专门的容器,这个容器里面可以装下多余屏幕宽度的组件,而后采用拖拽的方式显示所有在ScrollView中的组件.

2.1.1   ScrollView的使用

1.       首先我们在布局文件layout中定义一个ScrollView,因为ScrollView也是一个ViewGroup,所以我们可以直接使用ScrollView作为我们的xml文件的根元素;

2.       在ScrollView元素下面我们还给其定义了一个LinearLayout,并且设置了其方向为垂直方向的线性布局。我们添加图片的操作放在了代码中来完成。

<?xml version="1.0"encoding="utf-8"?>

<ScrollViewxmlns:android="http://schemas.android.com/apk/res/android"

   android:layout_width="match_parent"

   android:layout_height="match_parent">

 

   <LinearLayout

       android:id="@+id/layout"

       android:layout_height="match_parent"

       android:layout_width="wrap_content"

       android:orientation="vertical"/>

 

</ScrollView>

 

3.     在这个activity中, LinearLayout就是一个ViewGroup对象,所以我们可以动态的给其添加我们想要的View控件,这里我们给其添加了20张图片,下面为activity中的代码。

 

public class MainActivity extends Activity {

 

      private LinearLayout layout;

 

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

            //查找在布局中ScrollView包裹的LinearLayout

        layout= (LinearLayout) findViewById(R.id.layout);

        for(int i = 0; i < 20; i++) {

            //通过资源文件来获得指定一个Drawable对象

        Drawable drawable =getResources().getDrawable(R.drawable.ic_launcher);

        ImageViewimageView = new ImageView(this);

        imageView.setImageDrawable(drawable);

        layout.addView(imageView);

        }

       }

}

 

4.   我们看到,在Activity启动以后,就会在其下面生成20 个ImageView的对象,当手机屏幕显示不完全20张图片时,这些图片会跟随手指的滑动在垂直方向上滚动。如下图所示


2.1.2  ScrollView常用的属性

1. 隐藏ScrollView在滑动式出现的滚动条
(1)在布局中设置标签属性:android:scrollbars="none"
(2)在代码设置:   setHorizontalScrollBarEnabled(false);    //隐藏横向ScorollView
                  setVerticalScrollBarEnabled(false);       //
隐藏纵向ScorollView

2. 设置ScrollView在滑动式出现的滚动条宽度

android:scrollbarSize

3. 设置滚动条淡出效果(从有到慢慢的变淡直至消失)时间,以毫秒为单位

android:scrollbarFadeDuration

 

&多学一招:

    在以后开发项目中,有时可能会常用ScrollView包裹ListView,当嵌套之后会出现,ListVew数据显示不全,最多只显示两条已有的数据。其原因就是ScrollView事件的消费处理以及ListView控件的高度设定问题。

    解决办法:自定义一个ListView,重写onMeasure()方法,重新测量ListView的高度,代码如下:

public class ScrollViewWithListView extendsListView {

    publicScrollViewWithListView(android.content.Contextcontext,android.util.AttributeSet attrs) {

        super(context, attrs);

    }

    public void onMeasure(intwidthMeasureSpec, int heightMeasureSpec) {

        int expandSpec =MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >>2, MeasureSpec.AT_MOST); 

       super.onMeasure(widthMeasureSpec, expandSpec);

    }

}

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值