Android—ScrollView和HorizontalScrollView使用

来源:互联网 发布:水文气象数据的重要性 编辑:程序博客网 时间:2024/05/01 12:09

Android当中比较常用的两个布局容器–ScrollView和HorizontalScrollView,从字面意义上来看也是非常的简单的,ScrollView就是一个可以滚动的View,这个滚动的方向是垂直方向的,而HorizontalScrollView则是一个水平方向的可以滚动的View。

一、ScrollView的简单介绍
首先来看看ScrollView和HorizontalScrollView这两个View的定义。ScrollView和HorizontalScrollView都是一个布局容器,里面可以放入child View控件,我们通过其继承关系看到,ScrollView和HorizontalScrollView这两个类是ViewGroup的一个间接子类。

java.lang.Object   ↳    android.view.View        ↳    android.view.ViewGroup             ↳    android.widget.FrameLayout                  ↳    android.widget.ScrollView
java.lang.Object   ↳    android.view.View        ↳    android.view.ViewGroup             ↳    android.widget.FrameLayout                  ↳    android.widget.HorizontalScrollView

因为ScrollView和HorizontalScrollView只是两种滚动方向不同的View而已,其他方面都基本相同,所以下面只单单以ScrollView来讲解。

对于ScrollView来说,因为其是垂直方向上的滚动布局,因此通常我们给其添加一个LinearLayout的子元素,并且设置orientation为vertical(垂直方向的)。下面我们通过一个小例子来看看如何使用我们的ScrollView来展示多张图片,并且实现图片的垂直方向的滚动。

首先我们定义一个ScrollView,因为ScrollView也是一个ViewGroup,所以我们可以直接使用ScrollView作为我们的xml文件的根元素:

<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:fillViewport="false">    <LinearLayout        android:id="@+id/layout"        android:layout_height="match_parent"        android:layout_width="wrap_content"        android:orientation="vertical"/></ScrollView>

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

package com.turo.scrollviewtest;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ImageView;import android.widget.LinearLayout;public class MainActivity extends AppCompatActivity {    private LinearLayout layout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        layout = (LinearLayout) findViewById(R.id.layout);        for (int i = 0; i<10; i++){            //  通过资源文件来获得指定一个Drawable对象            Drawable drawable = getResources().getDrawable(R.drawable.dog);            ImageView imageView = new ImageView(this);            imageView.setImageDrawable(drawable);            layout.addView(imageView);        }    }}

我们看到,这个Activity非常的简单,因为LinearLayout就是一个ViewGroup对象,所以我们可以动态的给其添加我们想要的View控件,这里我们给其添加了10张图片,我们来看看效果:
我们看到,在Activity启动以后,就会在其下面生成10个ImageView的对象,并且这几张图片是可以在垂直方向上滚动的。

这里写图片描述

二、HorizontalScrollView
对于HorizontalScrollView而言,其实所有的思想都与ScrollView类似,唯一的区别是HorizontalScrollView是支持水平滚动的。在上面的实例中,只需要改变一下外围的ScrollView为HorizontalScrollView,再把其中包裹的LinearLayout的android:orientation属性设置为horizontal即可实现水平滚动的效果。

这里写图片描述

三、总结
对于现在的Android开发,大部分应用中,需要用到滚动效果的时候,比如说滑动的展示新闻的效果,都会直接使用ListView来装载数据。但是ScrollView还是有一定用处的,比如一些软件的属性的设置,就可以放在一个ScrollView中。核心思想就是对于一些动态的效果展示,就使用ListView,对于固定的一些效果展示,就使用ScrollView包裹即可。

0 0