一、開發背景

當 TextView 控件中的內容多到一屏显示不完时。就可以利用 ScrollView 制作控件的滾動效果。如下圖所示:

ScrollView 只能放置一个 View 或者一个 ViewGroup 。如果我们要在 ScrollView 放置多个控件,那么就要借助ViewGroup。先把多个控件放到ViewGroup,再把ViewGroup 放到 ScrollView 中。ScrollView 只支持垂直地上下滚动,如果要实现水平地左右滚动,那么就要借助HorizontalScrollView 。

不要把 RecyclerView 或者 ListView 嵌套放到 ScrollView 中,因為這會導致極差的用戶界面性能和用戶體驗。

二、ScrollView的两个重要方法

Android API 为我们提供了两个重要的方法,可以實現一鍵到達 ScrollView 的頂部和底部。正如我們在第一部分開發背景中所看到的那樣。要在 Android 程序中實現這樣的功能,我們需要掌握兩個方法的使用。

scrollView.fullScroll(ScrollView.FOCUS_UP)        回到ScrollView的頂部

scrollView.fullScroll(ScrollView.FOCUS_DOWN)         回到ScrollView的底部

三、使用 ScrollView

佈局先行,先完成用戶界面的製作。再完成 MainActivity 中的邏輯代碼。佈局代碼如下所示:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#44000000"tools:context=".demo01.ScrollViewActivity"><Buttonandroid:id="@+id/btn_1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="跳转到Top"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/btn_2"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="跳转到Bottom"app:layout_constraintTop_toBottomOf="@+id/btn_1" /><ScrollViewandroid:id="@+id/scroll"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"app:layout_constraintTop_toBottomOf="@+id/btn_2"><TextViewandroid:id="@+id/tv"android:layout_width="match_parent"android:layout_height="wrap_content" /></ScrollView></androidx.constraintlayout.widget.ConstraintLayout>

千萬不要被佈局代碼嚇到。抓住佈局代碼的特點。既然佈局代碼是用 XML 來寫的,那麼我們就來成對地看代碼中的標籤。從代碼的第2行到最後一行,是最外層的約束佈局。從代碼的第26行到第38行,是 ScrollView 的代碼。從代碼的33行到第36行,是嵌套在滾動視圖內的 TextView 控件,可以看到這裡遵循了原則:只能在 ScrollView 中嵌套一個 View 。好了,佈局代碼的重點已經給大家梳理了一遍。接下來請看 MainActivity 中的邏輯代碼。

package cn.com.helloworld.demo01;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;import cn.com.helloworld.R;public class ScrollViewActivity extends AppCompatActivity implements View.OnClickListener {private Button btn_1, btn_2;private ScrollView scroll;private TextView tv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_scroll_view);bindViews();}public void bindViews() {btn_1 = findViewById(R.id.btn_1);btn_2 = findViewById(R.id.btn_2);scroll = findViewById(R.id.scroll);tv = findViewById(R.id.tv);btn_1.setOnClickListener(this);btn_2.setOnClickListener(this);StringBuilder sb = new StringBuilder();for (int i = 0; i < 100; i++) {sb.append("这是第" + i + "条\n");}tv.setText(sb.toString());}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_1:scroll.fullScroll(ScrollView.FOCUS_UP);break;case R.id.btn_2:scroll.fullScroll(ScrollView.FOCUS_DOWN);break;default:break;}}
}

代碼的第27行到第42行,主要完成三個任務:一、綁定控件;二、網 TextView 中填充待會要在屏幕上顯示的數據;三、為控件綁定事件監聽。

代碼的第45行到第54行,完成 ScrollView 的自動滾動。第46行代碼的 switch 中表達式決定具體執行那個分支語句。如果我們點擊“跳轉到Top”的按鈕,那麼就會執行 R.id.btn_1 這個分支的代碼。

ScrollView制作屏幕滚动效果相关推荐

  1. 微信小程序:scroll-view制作横向滚动导航条特效

    微信小程序:scroll-view制作横向滚动导航条特效 一.scroll-view介绍 微信小程序官方释义为:可滚动视图区域,目前一共有10几个属性,包括:scroll-x.scroll-y.scr ...

  2. recycleview 清空数据 滚动顶部_爱剪辑:制作数字滚动效果,翻滚吧字幕!

    人来齐了8? 这次的效果依然吸睛哦! 用上爱剪辑的滚动类字幕特效,就能花式玩转数据- 用途当然是广泛der~ 倒计时.数据展示等一切关于数字的动画效果都适用~ 脑洞有多大,你的视频舞台就有多大 Par ...

  3. Axure - 实现手机屏幕滚动效果

    1.新建项目 2.拖拽一个矩形到顶部和底部并分别命名为navTop和navBtm 3.  拖拽一个动态面板到元件中间,并调整大小,命名为内容 4. 双击State1,编辑State1的面板状态.也可以 ...

  4. scratch做出按键控制屏幕滚动效果

    写在前面,咱们来看看效果吧~ 之前我写过的scratch实现LED,跑马灯变化背景如下.大家可以看看之前这个效果. scratch实现LED跑马灯效果 程序分析: 效果由按下左键,右键移动屏幕,就像P ...

  5. stm32单片机屏幕一直闪_基于STM32单片机实现屏幕休眠后OLED屏幕滚动效果

    这次做项目时需要实现OLED屏幕上字符滚动的功能,从网上找到一个参考:https://blog.csdn.net/tbmmagic/article/details/111999673 int main ...

  6. MTk屏幕切换效果的制作

    http://blog.csdn.net/menghnhhuan/article/details/6025019 学习MTK三四个月了,总要写点东西出来才行,这里简单说说,怎么制作屏幕切换效果.一些基 ...

  7. (转)MTk屏幕切换效果的制作

    学习MTK三四个月了,总要写点东西出来才行,这里简单说说,怎么制作屏幕切换效果.一些基本的概念,我就不说了,图层的原理和对图层操作的一些函数,至少要了解. 进入主题,说一下我的思路:首先,在进入新屏幕 ...

  8. html5视差滚动效果,视差滚动效果

    插件描述:制作视差滚动效果 The meat and potatoes. Invoking these will move that page in from that side. parallax. ...

  9. scrolltop 原生js_解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法...

    最近在做博客的目录功能,发现一个在现代浏览器间的一个bug,或是称之为差异,即页面滚动值(scrollTop)的获取与设定. 在此之前先说一下关于页面元素的坐标获取,这张图的经典性不必再提. 实现滚动 ...

最新文章

  1. 关于redis的几件小事(三)redis的数据类型与使用场景
  2. Python: 没有switch-case语句
  3. VBA学习笔记(9)--生成点拨(1)
  4. [置顶] 分步实现具有分页功能的自定义DataList控件【附源代码】
  5. python3默认编码标准是_python3 编码
  6. java分桃子_Java经典编程题分桃子
  7. 爬虫:使用Chrome谷歌浏览器自动获取xpath爬取内容为空
  8. C语言图书管理系统(链表、文件功能齐全)
  9. Python批量读取txt文件
  10. 激光打印机维护保养完全手册
  11. ping局域网里面全部的ip
  12. line-height含义
  13. 《鱿鱼游戏》播完,椪糖生意火了
  14. 通过一个例子快速上手矩阵求导
  15. 基础编程题目集-7-32 说反话-加强版 (20分)
  16. 浅谈企业信息化建设的整体规划
  17. #STC8A8K# #STC8F1K# #STC8G1K# #STC8H1K# ——STC8系列单片机整体评价
  18. PMP 中文注册、报考流程
  19. 【发生系统错误5。拒绝访问】的解决办法
  20. CSDN的积分如何获取

热门文章

  1. NBUT 1635 Explosion(最小顶点覆盖)
  2. oracle 19c 静默安装
  3. 360Email:会员邮件营销取胜要点总结
  4. Ubuntu权限分配(chmod命令)
  5. mvc2 手敲几个程序轻松学会springmvc,妈妈再也不用担心我的学习了!
  6. oracle rac环境下修改1521集群端口
  7. kafka-producer的生产速度与kafka-consumer的消费速度对比
  8. 瑞士军刀 netcat
  9. 谈谈数据库的隔离方式
  10. 使用STM32的串口进行大量数据传输