安卓layout布局,如何靠右

安卓layout布局,如何靠右,第1张

里面我记得有个属性是android:layout_alignParentLeft 如果该值为true,则将该控件的左边与父控件的左边对齐,android:layout_alignParentRight 如果该值为true,则将该控件的右边与父控件的右边对齐,用这个就可以了。

  和onMeasure方法一样,onLayout也有个对应的layout方法。先看下layout和onLayout的区别

View中的layout方法

View的layout方法

  这是一个被final修饰的方法,意味着无法被子类重写。但是内部事件还是调用了View中的layout方法

  View中的onLayout是一个空实现的方法,通过layout方法将新的left、top、right、bottom传给onLayout。

  官方注释在此视图应该时从布局调用(layout方法执行),此视图(onLayout方法执行)给每个孩子分配一个大小和位置。子类的派生类应该重写此方法并在每个子View上调用布局(layout方法)。

  View的子类当然是ViewGroup了,所以ViewGroup更加像是一个View的管理器,用来实现对子View的大小和位置变化进行控制。简单来说View会通过onLayout方法进行确认View的显示位置。

  ViewGroup中的onLayout方法是一个抽象方法,所以子类必须实现。并且调用View中的layout方法来确认View的位置和大小。

  在layout方法中mLeft、mTop、mRight、mBottom这四个值是用来进行对View位置的摆放和大小的限制,是相对于父控件而言的。

如图白色区域是父View,黑色区域为子View。

针对getWidth()和getMeasuredWidth()进行分析 ,先看下区别

  mMeasuredWidth这个值之前在 小试牛刀-onMeasure方法 中介绍过是View的实际大小宽对应的值是mMeasuredWidth,而mMeasuredWidth是通过setMeasuredDimension方法设置进来的。所以在measure方法结束后mMeasuredWidth才会有值,此时调用getMeasuredWidth可以获取对应的值。

  在getWidth()中是通过mRight - mLeft的计算返回的结果。而mRight和mLeft这两个值,上面有介绍是通过layout传递过来的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11243621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存