ScrollView讲解
本章重点
u ScrollView 应用场景:
u ScrollView 注意事项:
1.1.1什么是ScrollView
Scrolliew相当于一个布局容器。里面可以放入子控件,由于手机屏幕的宽高有限,所以如果面对组件要显示多组信息的时候,ScrollView(滚动视图)可以有效的安排这些组件,浏览时,可以通过手指的滑动,进行滚屏的操作,这个滚动的方向是垂直方向的,当然也有水平滚动的HorizontalScrollView,通过下图可以看出Scrolliew是ViewGroup的间接子类。ScrollView 和HorizontalScrollView在用法及属性上基本一致,下面只讲述ScrollView。
1.1.2为什么要用ScrollView
当我们在手机屏幕上要显示的内容超出屏幕的宽度或者高度时,我们可以使用ScrollView来包裹我们要显示的全部内容,这样当内容显示不完全的时,可以通过手指的滑而显示其余内容。
1.1.3 ScrollView与其他容器的区别
ScrollView的使用方法与Android中几种布局管理器的操作形式类似,唯一不同的是,所有的布局管理器之中,可以包含多个组件,而Scrolliew(滚动视图)里只能有一个View或者ViewGroup,也就是ScrollView容器中只能有一个child。所以Scrolliew(滚动视图)指的就是提供一个专门的容器,这个容器里面可以装下多余屏幕宽度的组件,而后采用拖拽的方式显示所有在ScrollView中的组件.
2.1.1 ScrollView的使用
1. 首先我们在布局文件layout中定义一个ScrollView,因为ScrollView也是一个ViewGroup,所以我们可以直接使用ScrollView作为我们的xml文件的根元素;
2. 在ScrollView元素下面我们还给其定义了一个LinearLayout,并且设置了其方向为垂直方向的线性布局。我们添加图片的操作放在了代码中来完成。
<?xml version="1.0"encoding="utf-8"?>
<ScrollViewxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/layout"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:orientation="vertical"/>
</ScrollView>
3. 在这个activity中, LinearLayout就是一个ViewGroup对象,所以我们可以动态的给其添加我们想要的View控件,这里我们给其添加了20张图片,下面为activity中的代码。
public class MainActivity extends Activity {
private LinearLayout layout;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//查找在布局中ScrollView包裹的LinearLayout
layout= (LinearLayout) findViewById(R.id.layout);
for(int i = 0; i < 20; i++) {
//通过资源文件来获得指定一个Drawable对象
Drawable drawable =getResources().getDrawable(R.drawable.ic_launcher);
ImageViewimageView = new ImageView(this);
imageView.setImageDrawable(drawable);
layout.addView(imageView);
}
}
}
4. 我们看到,在Activity启动以后,就会在其下面生成20 个ImageView的对象,当手机屏幕显示不完全20张图片时,这些图片会跟随手指的滑动在垂直方向上滚动。如下图所示
2.1.2 ScrollView常用的属性
1. 隐藏ScrollView在滑动式出现的滚动条
(1)在布局中设置标签属性:android:scrollbars="none"
(2)在代码设置: setHorizontalScrollBarEnabled(false); //隐藏横向ScorollView
setVerticalScrollBarEnabled(false); //隐藏纵向ScorollView
2. 设置ScrollView在滑动式出现的滚动条宽度
android:scrollbarSize
3. 设置滚动条淡出效果(从有到慢慢的变淡直至消失)时间,以毫秒为单位
android:scrollbarFadeDuration
&多学一招:
在以后开发项目中,有时可能会常用ScrollView包裹ListView,当嵌套之后会出现,ListVew数据显示不全,最多只显示两条已有的数据。其原因就是ScrollView事件的消费处理以及ListView控件的高度设定问题。
解决办法:自定义一个ListView,重写onMeasure()方法,重新测量ListView的高度,代码如下:
public class ScrollViewWithListView extendsListView {
publicScrollViewWithListView(android.content.Contextcontext,android.util.AttributeSet attrs) {
super(context, attrs);
}
public void onMeasure(intwidthMeasureSpec, int heightMeasureSpec) {
int expandSpec =MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >>2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
本文详细介绍了Android中的ScrollView,包括其应用场景、注意事项和与其它容器的区别。ScrollView是用于展示超过屏幕内容的容器,允许垂直滚动。在使用时,ScrollView内只能有一个View或ViewGroup,并提供了隐藏滚动条和自定义滚动条样式等属性设置。
6966

被折叠的 条评论
为什么被折叠?



