Android之ScrollView详解
1.ScrollView使⽤介绍
⾸先来看google官⽅对他的介绍,翻译过来就是可以滚动的⽤户布局容器,如果⼿机显⽰不下⼦布局,那么可以使⽤scrollView,当然⾕歌也说NestedscrollView已经提供了更好的⽤户体验,这个我们以后再详细总结下。
里程碑的意思⾕歌官⽅已经提⽰,不要在scrollView中添加RecyclerView或者是ListView布局,这样会引起不好的体验因为会有滑动冲突的问题出现。另外,ScrollView的直接⼦View只能有⼀个。也就是说如果你的视图结构⽐较复杂,你需要⼀个标准的容器,
如LinearLayout、RelativeLayout等。ScrollView只⽀持竖直滑动,⽔平滑动使HorizontalScrollView。
先看布局:
&straintlayout.widget.ConstraintLayout xmlns:android="/apk/res/android" xmlns:app="/apk/res-auto"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ScrollView
android:id="@+id/vertical_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
天才的英文<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
<include layout="@layout/scollview_item"/>
</LinearLayout>
</ScrollView>
</straintlayout.widget.ConstraintLayout>
<LinearLayout xmlns:android="/apk/res/android" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"暇怎么读
android:layout_marginBottom="10dp"
英语高效课堂
>
白玫瑰花<ImageView
android:layout_height="64dp"
android:layout_width="64dp"
android:src="@drawable/vector_drawable_right"
/>
<TextView
复韵母表android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="ScollViewItem"
android:textSize="21dp"
android:gravity="left|center_vertical"
android:layout_gravity="center"
/>
</LinearLayout>
效果图:建党节图片
我是在scrollView中添加了⼀个LinearLayout,默认是垂直。
scrollView的⼤⼩是撑满了⽗布局。
在这⾥说⼀下,ScrollView是⼀种特殊的布局。当ScrollView的内容⼤于他本⾝的size的时候,ScrollView会⾃动添加滚动条,并可以竖直滑动。如果想要在⼦View⾼度⼩于ScrollView⾼度时占满,必需在xml⾥为ScrollView加上Android:fillViewport="true",这样⼦View⼩于ScrollView⾼度时就会占满⽗View.
在说下⾯之前,再介绍下scollview的其他特点:
新学期标语
scollview在滑动的时候默认是有滑动条的
android:scrollbars="vertical"//垂直滚动条
android:fadeScrollbars="fal"//不隐藏
如果只添加
android:scrollbars="vertical"
则只有在上下滑动页⾯的时候才会有垂直滚动条,停⽌滑动则滚动条消失。
如果不想显⽰滚动条:
android:scrollbars="none"
不想显⽰ScrollView拉到尽头(顶部、底部)出现的阴影效果,适⽤于2.3及以上的 否则不⽤设置.
android:overScrollMode="never"
2.Android ScrollView监听滑动到顶部和底部:
有需求才会有市场!
需求:典型的就是滚动到底部触发⾃动加载操作
整体思路:
1.⾃定义View
2.bottom_position - (getHeight() + getScrollY()) -getPaddingBottom
3.添加滑动到底部条件的回调监听
在这⾥简单说⼀下这⼏个⽅法:
getHeight():获得当前view的⾼度
getScrollX():Return the scrolled left position of this view
意思是返回当前滑动View左边界的位置,其实获取的值就是这块幕布在窗⼝左边界时的x坐标,⽽幕布上⾯哪个点是原点(0,0)呢?就是初始化时内容显⽰的位置。具体的可以看下⾯的这张图。
getScrollY()与这个类似,是获取窗⼝上边界时的y坐标,当然这两个值会随着滑动⽽变化。
这⾥如果在实践的时候log⼀下就会更清楚!
1.CustomScrollView.java