Android—ScrollView和HorizontalScrollView使用

野性酷女 2022-07-15 18:29 336阅读 0赞

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

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

  1. java.lang.Object
  2. android.view.View
  3. android.view.ViewGroup
  4. android.widget.FrameLayout
  5. android.widget.ScrollView
  6. java.lang.Object
  7. android.view.View
  8. android.view.ViewGroup
  9. android.widget.FrameLayout
  10. android.widget.HorizontalScrollView

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

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

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

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

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

  1. package com.turo.scrollviewtest;
  2. import android.graphics.drawable.Drawable;
  3. import android.os.Bundle;
  4. import android.support.v7.app.AppCompatActivity;
  5. import android.widget.ImageView;
  6. import android.widget.LinearLayout;
  7. public class MainActivity extends AppCompatActivity {
  8. private LinearLayout layout;
  9. @Override
  10. protected void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.activity_main);
  13. layout = (LinearLayout) findViewById(R.id.layout);
  14. for (int i = 0; i<10; i++){
  15. // 通过资源文件来获得指定一个Drawable对象
  16. Drawable drawable = getResources().getDrawable(R.drawable.dog);
  17. ImageView imageView = new ImageView(this);
  18. imageView.setImageDrawable(drawable);
  19. layout.addView(imageView);
  20. }
  21. }
  22. }

我们看到,这个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 条评论,336人围观)

还没有评论,来说两句吧...

相关阅读