美文网首页
测量方法&属性

测量方法&属性

作者: 我爱吃青苹果 | 来源:发表于2017-05-08 21:55 被阅读0次

    获取view的宽高属性

    View.getMeasuredWidth()         //获取测量的宽高
    View.getLayoutParams().width    //通过xml布局文件layout属性,来获取宽高属性
    View.getWidth()                 //获取测量好的宽高
    

    使用时机

    View.getMeasuredWidth()         //onMeasure()方法之后(包含此方法)
    View.getLayoutParams().width    //onMeasure()方法之后(包含此方法)
    View.getWidth()                 //onSizeChanged()方法之后(包含此方法)
    

    些许bug

    View.getMeasuredWidth()         //一般情况下测量很准确,但是如果view最外层的xml有background背景图片,系统测量时会参考background图片的大小,可能会造成测量不准确
    View.getLayoutParams().width    //xml没有明确的dp值,根据属性可能有值: -1(LayoutParams.MATCH_PARENT=-1),-2(LayoutParams.WRAP_CONTENT=-2)
    View.getWidth()                 //一般没有坑
    

    View.getLayoutParams()

    onFinishInflate()执行时,还未载入xml布局文件,此时调用View.getLayoutParams()会造成空指针异常
    

    View.getLeft()

    View.getLeft()参照最近一次layout()布局,如果布局不变,使用scrollTo()方法移动view,系统也判定view的布局未改,View.getLeft()值也不变
    

    scrollTo()

    此方法并不真正改变view的layout(left,top,right,buttom)布局,只是让我们看到view能够移动,在系统中view的布局不变
    

    onLayout()

    此方法一般被调用2次
    

    recyclerView条目要使用一下方式解析xml布局,否则最外层的控件宽度高度不生效

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent,false);
    

    事件传递至少应当有 ACTION_DOWN

    • dispatchTouchEvent()
    MotionEvent传递 ACTION_DOWN ACTION_MOVE
    
    • onInterceptTouchEvent()
    MotionEvent传递 ACTION_DOWN 
    
    • onTouchEvent()
    MotionEvent传递 ACTION_DOWN ACTION_MOVE

    相关文章

      网友评论

          本文标题:测量方法&属性

          本文链接:https://www.haomeiwen.com/subject/uzpvtxtx.html