高级控件之滚动视图(ScrollView)

您所在的位置:网站首页 autojs列表控件 高级控件之滚动视图(ScrollView)

高级控件之滚动视图(ScrollView)

2024-07-11 10:26| 来源: 网络整理| 查看: 265

一.滚动视图的基础概念

       滚动视图用于为其它组件添加滚动条,在默认的情况下,当窗体中内容比较多,而一屏显示不下时, 超出的部分不能被用户所看到.因为Android的布局管理器本身没有提供滚动屏幕的功能.如果 要让其滚动,就要使用滚动视图ScrllView.        滚动视图是FrameLayout的子类,因此,在滚动视图中,可以添加任何想要放入其中的组件,但是一个滚动视图中只能放一个组件,如果要放置多个,可以先放一个存布局管理器.再将要放置的组件放置到该布局管理器中,在滚动视图中,使用比较多的是线性布局管理器.

(一)滚动视图(ScrollView)的XML配置: //这里只能放一个布局或控件 //一般是放LinearLayout布局 (二)水平滚动视图(HorizontalScrollView)

HorizontalScrollView和ScrollView差不多,只是滚动方式为横向 XML配置:

滚动视图的作用:

       1.滚动视图使用后能让里面的视图控件没展示的部分滚动后可以展示 比如一个TextView默认情况文本过大后,超出屏幕或框体的内容是不能显示出来的,但是如果把这个TextView放到一个滚动视图中,就能上下滚动显示没有显示的文本内容。        2.水平滚动的视图内显示横向拉伸的布局的内容 比如一个水平的LinearLayout放置十个按钮,那么只能显示五个,如果把这个LinearLayout放在一个水平滚动的视图中,就可以水平的拖动视图显示后面的按钮。

       值得注意的是ListView是默认带滚动的,不需要滚动视图的包裹。        而Android的五六布局(线性布局,相对布局,绝对布局,表格布局,网格布局,层布局)和简单控件(TextView,ImageView等等)默认是不能滚动显示的,除非放到滚动视图中。        还有一点值得注意的是,如果ListView放到ScrollView中去这里ListView要自定义的拉长,否则会默认显示ListView中的一行数据,要拉伸才显示其他内容。

二.简单展示的示例程序 (一)布局文件activity_main.xml设计 (二)java代码设计 package com.example.lesson7_scrollview; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; /** * ScrollView的简单展示 */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tvTile = (TextView) findViewById(R.id.tv_title); tvTile.setTextSize(30); tvTile.setText("文章标题:。。。"); TextView tv = (TextView) findViewById(R.id.tv_content); tv.setTextSize(20); CharSequence text = "锅盔的原材料都是庄稼人自家酿种的。" + "\n" + "面粉是自家地里种的小麦磨成的;" + "\n" + "是自家饲养的鸡产的;香豆子," + "\n" + "是自家地埂上撒出来的。这些材料," + "\n" + "也是靠老天的眷顾,才有的。山区," + "\n" + "就是靠天吃饭。万一哪一年," + "\n" + "老天一生气不下雨,山就荒了," + "\n" + "地也荒了,人也慌了," + "\n" + "妈妈的锅盔也会瘪了。" + "\n" + "妈妈经过泡发面、和面、醒面等几道程序," + "\n" + "把这些材料依次揉进面里," + "\n" + "再切成碗口大的面团,揉成馒头,再用擀杖稍稍一擀," + "\n" + "或用手掌稍稍一按,就成了一寸多高、盘子大小的圆饼。" + "\n" + "灵巧、细心、唯美的妈妈总不忘在饼上面" + "\n" + "用菜刀画出美丽对称的图案:三角形、四边形、菱形等等。" + "\n" + "妈妈的爱,就在那揉、擀、按、画的过程中," + "\n" + "一点一点渗进锅盔里,流进我的血脉里。弄好的锅"; tv.setText(text); } }

程序运行后的显示界面:

g1

页面往下拉显示的界面: g2

如果ListView或GridView放在ScrollVIew中要做的处理: 如果是ListView在ScrollView中时的处理: package com.lwz.mathbox.weight; import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /** * 可滚动的ListView,这里是因为这个ListView被包裹在一个ScrollView中才需要设置纵向拉伸 */ public class ScrollListView extends ListView { public ScrollListView(Context context) { super(context); } public ScrollListView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int height = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, height); } } 如果是GridView在ScrollView中时的处理: package com.lwz.mathbox.weight; import android.content.Context; import android.util.AttributeSet; import android.widget.GridView; /** * 重写网格View,设置高度 * 可滚动的GridView,这里是因为这个GridView被包裹在一个ScrollView中才需要设置纵向拉伸 */ public class ScrollGridView extends GridView { public ScrollGridView(Context context) { super(context); } public ScrollGridView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int height = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, height); } }

使用的时候把这两个类分别当中ListView和GridView使用就可以了。

比如:

//包名+类名 //包名+类名


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3