ScrollView的fillViewPort属性

ScrollView嵌套Relative时候会发生问题,RelativeLayout不会充满ScrollView,即使设置match_parent属性也不行

这个时候就需要fillViewPort属性登场了,在ScrollView的源码的onMeasure中,专门针对这个属性做了特殊的处理


protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    if (!mFillViewport) {
        return;
    }

    final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
    if (heightMode == MeasureSpec.UNSPECIFIED) {
        return;
    }

    if (getChildCount() > 0) {
        final View child = getChildAt(0);
        final int widthPadding;
        final int heightPadding;
        final int targetSdkVersion = getContext().getApplicationInfo().targetSdkVersion;
        final FrameLayout.LayoutParams lp = (LayoutParams) child.getLayoutParams();
        if (targetSdkVersion >= VERSION_CODES.M) {
            widthPadding = mPaddingLeft + mPaddingRight + lp.leftMargin + lp.rightMargin;
            heightPadding = mPaddingTop + mPaddingBottom + lp.topMargin + lp.bottomMargin;
        } else {
            widthPadding = mPaddingLeft + mPaddingRight;
            heightPadding = mPaddingTop + mPaddingBottom;
        }

        final int desiredHeight = getMeasuredHeight() - heightPadding;
        if (child.getMeasuredHeight() < desiredHeight) {
            final int childWidthMeasureSpec = getChildMeasureSpec(
                    widthMeasureSpec, widthPadding, lp.width);
            final int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
                    desiredHeight, MeasureSpec.EXACTLY);
            child.measure(childWidthMeasureSpec, childHeightMeasureSpec);
        }
    }
}

?

时间: 2024-10-26 00:11:24

ScrollView的fillViewPort属性的相关文章

ios 中scrollview的 bounce属性与view中的clipsTobounds属性

一:scrollview的 bounce属性 当scrollview滚动到边界时,再继续滚动会有个反弹的效果,scrollview里有bounce属性,当设置为yes时,可以反弹,设置为NO时不能反弹,请问,能不能使得它只有一个边界能反弹呢,这个作用可以用来实现在一个scrollview里添加tableview与scrollview可以连续滑动,也就是,当table滑动到底时scrollview下面的scrollview接着滑动 二:view中的clipsTobounds属性 iew2添加vie

[Android Pro] ScrollView使用fillViewport设置高度为MatchParent

reference to : http://blog.csdn.net/u012975705/article/details/49275001 之前遇到一问题,就是当使用ScrollView时,ScrollView控件里的布局无法充满整个手机屏幕,通过阅读源码发现,ScrollView中有个mFillViewport属性: When set to true, the scroll view measure its child to make it fill the currently visib

关于scrollView的一些属性

今天先给大家上一副图以后补充文字性知识: 希望这副图可以帮助大家了解contentInset,contentOffset与contentSize这三个属性!

小程序-scroll-view用法及属性

如果屏幕中某元素的内容超过此元素的高度,可设置元素为scroll-view 为滚动状态元素,这样可以做到元素固定高度且元素内容滚动屏幕不滚动的效果: scroll-view标签的主要属性分为以下几种: <scroll-view scroll-y="false" scroll-x="false" bindscrolltoupper="" bindscrolltolower="" bindscroll=""

Android:ScrollView+SwipeRefreshLayout组合使用下的一个Bug分析

今天组里的同事要做一个奇葩的效果,要求在ScrollView里嵌套一个RefreshLayout.类似代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" a

Android ScrollView遇到的问题

使用scrollview后,alignParentBottom不起效,布局不能完全拉伸,match_parent无效 设置scrollView的fillViewPort属性为true Romain Guy write a little info about a ScrollView attribute that is missing  from documentation :android:fillViewport="true" . It must be set to ScrollVi

Android ListView,GridView,ScrollView,ProgressBar,SeekBar,RelativeLayout,EditText常用属性

ListView的一些特殊属性: 1.ListView的XML属性 [java] view plaincopy android:divider//在列表条目之间显示的drawable或color android:dividerHeight//用来指定divider的高度 android:entries//构成ListView的数组资源的引用.对于某些固定的资源,这个属性提供了比在程序中添加资源更加简便的方式 android:footerDividersEnabled//当设为false时,Lis

android ScrollView 充满屏幕

android:fillViewport=true ScrollView下面的组件如果有android:layout_height="fill_parent"或android:layout_height="wrap_content" 那么必须将ScrollView的android:fillViewport属性设为true,不然高度撑不满整个ScrollView.

UIScrollView 的常用属性和方法

1.继承关系:UIView -> UIResponder -> NSObject2.代理:UIScrollViewDelegate// *2.1 一但偏移量发生变化就会调用  - (void)scrollViewDidScroll:(UIScrollView *)scrollView;// *2.2 将要缩放时就return谁   2.2.1 由于要缩放内容,我们需要设置最大和最小的缩放比例    scrollView.minimumZoomScale = 1.0f;    scrollVie