android滚动条布局平分,让你的布局滚动起来—ScrollView
前言
通过两天的”实战“,今天我们稍微放松一下脚步,让大家喘口气歇一会儿,我们今天为大家带来的控件,解决了太多在项目中遇到的适配问题,如果你已经碰到了这种问题,就紧跟我们的脚步吧~
在前面几篇文章中,向大家介绍了一些常用的布局及UI控件。在使用的过程中,可能会遇到这样的场景,当绘制的UI控件超出手机屏幕尺寸的时候,就会导致此UI控件无法显示。为了解决这一问题,Android提供了滚动视图ScrollView,下面就详细介绍下ScrollView的具体使用。
简介
ScrollView称为滚动视图,当在一个屏幕的像素显示不下绘制的UI控件时,可以采用滑动的方式,使控件显示。
先看下ScrollView类的继承关系:
java.lang.Object
↳android.view.View
↳android.view.ViewGroup
↳android.widget.FrameLayout
↳android.widget.ScrollView
可以看出,ScrollView原来是一个FrameLayout的容器,不过在他的基础上添加了滚动,允许显示的比实际多的内容。
使用方式
1.竖直滚动视图ScrollView
在页面的竖直方向线性布局5个Button,代码如下:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="内容一"
android:textColor="#03A9F4"
android:textSize="24sp" />
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:gravity="center"
android:text="内容二"
android:textColor="#03A9F4"
android:textSize="24sp" />
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:gravity="center"
android:text="内容三"
android:textColor="#03A9F4"
android:textSize="24sp" />
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:gravity="center"
android:text="内容四"
android:textColor="#03A9F4"
android:textSize="24sp" />
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:layout_marginBottom="80dp"
android:gravity="center"
android:text="内容五"
android:textColor="#03A9F4"
android:textSize="24sp" />
通过Android Studio的Preview视图也可以看出,5个Button已超出屏幕显示,在不使用ScrollView的情况下,父布局直接使用LinearLayout,是无法使屏幕滑动显示所有控件的。
使用ScrollView后显示如下:
注意:ScrollView的子元素只能有一个,可以是一个View(如ImageView、TextView等) 也可以是一个ViewGroup(如LinearLayout、RelativeLayout等),其子元素内部则不再限制,否则会报以下异常。
Caused by: java.lang.IllegalStateException: ScrollView can host only one direct child
2.水平滚动视图HorizontalScrollView
在实际使用时,我们也会遇到水平方向,控件超出屏幕的情况。这时就需要使用水平方向的滚动视图HorizontalScrollView。
在上面代码头部新增一个HorizontalScrollView,水平方向线性布局4个ImageView,代码如下:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginTop="20dp">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal">
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher" />
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher" />
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher" />
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher" />
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="内容一"
android:textColor="#03A9F4"
android:textSize="24sp" />
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:gravity="center"
android:text="内容二"
android:textColor="#03A9F4"
android:textSize="24sp" />
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:gravity="center"
android:text="内容三"
android:textColor="#03A9F4"
android:textSize="24sp" />
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:layout_marginBottom="80dp"
android:gravity="center"
android:text="内容四"
android:textColor="#03A9F4"
android:textSize="24sp" />
展示效果如下:
可以看出,HorizontalScrollView中的图片内容,可以横向滑动,并且整个布局由于外部嵌套了ScrollView,整体页可以竖直方向滑动。
注意:同ScrollView,HorizontalScrollView中的子元素也只能有一个,否则报错。
XML中常用属性介绍
1.android:fadingEdge="none"
设置拉滚动条时,边框渐变的方向。none(边框颜色不变),horizontal(水平方向颜色变淡),vertical(垂直方向颜色变淡)。
2.android:overScrollMode="never"
删除ScrollView拉到尽头(顶部、底部),然后继续拉出现的阴影效果,适用于2.3及以上的 否则不用设置。
3.android:scrollbars="none"
设置滚动条显示,none(隐藏),horizontal(水平),vertical(垂直)。
4.android:descendantFocusability=""
该属性是当一个为view获取焦点时,定义ViewGroup和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants//viewgroup会优先其子类控件而获取到焦点
afterDescendants//viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants//viewgroup会覆盖子类控件而直接获得焦点
5.android:fillViewport=“true"
这是 ScrollView 独有的属性,用来定义 ScrollView 对象是否需要拉伸自身内容来填充
viewport。通俗来说,就是允许ScrollView去填充整个屏幕。比如ScrollView嵌套的子控件高度达不到屏幕高度时,虽然ScrollView高度设置了match_parent,也无法充满整个屏幕,需设置android:fillViewport=“true"使ScrollView填充整个页面,给ScrollView设置背景颜色就能体现。
常用方法:
滑动开关控制
scrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
// true禁止滑动 false可滑动
return true;
}
});
滑动位置控制
scrollView.post(new Runnable() {
@Override
public void run() {
//滑动到顶部
scrollView.fullScroll(ScrollView.FOCUS_UP);
//滑动到底部
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
});
滑动到某个位置
scrollView.post(new Runnable() {
@Override
public void run() {
//偏移值
int offset = 100;
scrollView.smoothScrollTo(0, offset);
}
});
结语
可以看出,ScrollView是在日常开发中经常使用的View控件,其使用方式也比较简单。上面只是介绍了一些基本的使用操作,在接下来的文章中还会结合实际项目技能点进行深入分析,快点儿来关注我们吧!
(ID:下码看花)
android滚动条布局平分,让你的布局滚动起来—ScrollView相关推荐
- android滚动条布局横向,Android自定义ViewGroup实现可滚动的横向布局(2)
这里直接代码: package com.example.libingyuan.horizontallistview.ScrollViewGroup; import android.content.Co ...
- android约束布局中 链,Android-ConstraintLayout(约束布局)-Chains链(链条布局,Nice)
到Chains这个部分了.之前的新项目做得登录,注册,重置密码等暂时还没用到这种.不过后面可能随着新的设计可能会涉及到.所以赶紧过来看看先.新项目基本就打算全部用约束布局实现了.实际用了也会越来越熟悉 ...
- Android用户界面设计“.NET研究”:框架布局
框架布局是将控件组织在Android程序的用户界面中最简单的布局类型之一. 理解布局对于良好的Android程序设计来说是非常重要的.在这个教程里,你将学到所以关于框架布局的知识,它们主要用来在屏幕上 ...
- Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)
文章目录 1. 开发第一个Hello World程序 1.1 开发程序 1.2 认识程序中的文件 1.3 Android程序结构 1.4 安卓程序打包 2. Android UI开发 2.1 布局的创 ...
- android ui动画效果怎么做,AndroidUI 布局动画-为列表添加布局动画效果
新建一个Android project ,使MainActivity 继承自 ListActivity: public class MainActivity extends ListActivity ...
- android开发4:Android布局管理器1(线性布局,相对布局RelativeLayout-案例)
控件类概述 View 可视化控件的基类 属性名称 对应方法 描述 android:background setBackgroundResource(int) 设置背景 android:clickabl ...
- Android 软键盘弹出时把布局顶上去,控件乱套解决方法
Android 软键盘弹出时把布局顶上去,控件乱套解决方法 参考文章: (1)Android 软键盘弹出时把布局顶上去,控件乱套解决方法 (2)https://www.cnblogs.com/zhuj ...
- 【Android 应用开发】AndroidUI设计之 布局管理器 - 详细解析布局实现
写完博客的总结 : 以前没有弄清楚的概念清晰化 父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器 ...
- Android --- 使用纯java代码实现相对布局(通俗易懂)
java布局 java代码布局和xml布局的区别 1.Java纯布局更加的灵活,比如自定义控件或一些特殊要求时,使用java代码布局 2.常用的xml布局是所见即所得的编写方式,以及xml本身拥有一些 ...
最新文章
- 【网络流24题】飞行员配对方案问题
- docker 鱼龙混杂之基础操作篇
- 用工具进行CAD转换图片的过程
- c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...
- 【ARM】Tiny4412裸板编程之MMU(段 16M)
- 大学计算机思维导图_【21计算机考研】改考408+1!上海电力大学翻倍扩招,仍考数据结构!...
- elastic 索引库_使用Elastic Job Agents自动执行Azure SQL数据库索引维护
- MATLAB基本运算
- 见贤思齐,正式开启源码之旅
- IIS6上Ssl开发环境的搭建
- C语言 常用标准库函数 初学者常用
- EXCEL的字符串处理公式,自带工作表函数汇总
- WordPress中文插件 Erphpdown vip会员+推广提成+收费下载/查看内容+前端个人中心 银联/支付宝/微信支付/财付通/贝宝paypal[更新至v9.6.1]
- Spring源码解析之AOP篇(一)----代理模式详解
- Python转义字符及用法
- 手把手教你使用Travis CI自动部署你的Hexo博客到Github上
- CRC32、murmur32、SDBM32碰撞实验数据对比
- 怎么免费提取PDF页面?
- 网上药店领导品牌_药康网
- RabbitMQ解决消息幂等性问题
热门文章
- 【报告分享】2021年30+精致女性人群需求洞察:“她”经济时代科技引领精致生活.pdf(附下载链接)...
- 个性化商品搜索相关研究梳理
- 遍历列表python_python中列表的遍历
- python随机分组的思路_python – 对对象进行分组以实现所有组的类似平均属性
- 面试准备——Java回顾:基础编程(基本语法、面向对象、异常处理)
- Leetcode每日一题:15.3sum(三数之和)
- 新建一个html页 必须要有的标签 (meta)
- MVP小白入门,只需5步
- c++ opencv mat_图像拼接Opencv源码重构
- left join 大表放前面_带娃时,走在孩子前面与跟在孩子身后区别很大,很多父母都做错了...