第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Android中View大小的確定過(guò)程

標(biāo)簽:
Android

測試博客發表是否正常

View and ViewGroup

安卓中有5种基本的 ViewGroup:

  • FrameLayout

  • RelativeLayout

  • LinearLayout

  • TableLayout

  • AbsoluteLayout

ViewGroup可以添加子View,在xml文件里面,我们可以这样写:

<RelativeLayout     android:layout_width="match_parent"     android:layout_height="100dp" >     <TextView         android:layout_width="match_parent"         android:layout_height="wrap_content" />     <ImageView         android:layout_width="match_parent"         android:layout_height="20dp" /> </RelativeLayout>

子View的大小

  • LayoutParams

    LayoutParams用来描述一个View在父容器中大小,它包括了高度和宽度两个维度的信息,每个维度的数据类型都是int,取值是下面三种情况之一:

  1. FILL_PARENT / MATCH_PARENT, 取值是 -1.

    填充满父容器, minus padding.

  2. WRAP_CONTENT, 取值是 -2.

    尺寸尽量小,能包住自身的全部内容就行, plus padding.

  3. 一个确定的尺寸,大于等于0的一个数值。

父容器的大小状态

  • Padding

    留白。自身内容的大小加上留白就是父容器的内容的真正大小。

  • MeasureSpec

    当父容器要确定子View的大小的时候,父容器需要告诉子View自身的大小状态。当父容器所属的大小状态不同时,对子View的尺寸约束是不一样的。父容器大小状态有下面三种情况:

    parentchild
    UNSPECIFIED父容器对子View没有任何约束,子View可以按自身需要,任意大小。
    EXACTLY父容器大小是一个确定的数值,子View只能限定在指定大小内。
    AT_MOST父容器本身以及内含的所有子View大小不能超过指定大小。
  • View的尺寸大小和尺寸状态

    尺寸大小的数据类型是 int, 8个字节。

    尺寸大小和尺寸状态在很多时候需要一起传递,为了减少对象的分配,把三种尺寸状态编码到尺寸大小int变量的最高位2个位中。

  1. UNSPECIFIED

    +-----------+---------- | 00xx xxxx | 剩余的7个字节.    0x00 << 30 + value +-----------+----------
  2. EXACTLY

    +-----------+---------- | 01xx xxxx | 剩余的7个字节.    0x01 << 30 + value +-----------+----------
  3. AT_MOST

    +-----------+---------- | 10xx xxxx | 剩余的7个字节.    0x10 << 30 + value +-----------+----------

子View尺寸的最终确定

子View有一个期望的尺寸大小,父容器有尺寸大小约束,这两方面的约束协调,用来计算View的大小状态。

  1. 根据父容器的尺寸状态,以及子View的LayoutParams,可以确定子View的大小和状态:MeasureSpec,并要求子View确定自身大小。

    调用子View的measure()方法,子View的onMeasure()方法也会被执行。

  2. 子View在onMeasure()方法中,根据父容器给出的尺寸大小和约束,根据自身情况,确定最终的大小。

  3. 父容器根据子View的确定的大小,最终确定自身大小。

需要考虑的因素

  • 父容器的尺寸状态:

  1. EXACTLY

  2. AT_MOST

  3. UNSPECIFIED

父容器的尺寸大小: parentSize

父容器的留白:parentPadding

父容器真正内容的大小是: parentSize - parentPadding, 用变量 parentContentSize代替。

子View的LayoutParams:

  1. 确定的数值, childSize

  2. MATCH_PARENT

  3. WRAP_CONTENT

需要确定的

  • 子View的大小状态

  • 子view的尺寸大小

尺寸确定的规则

  • 父容器的大小状态处于 EXACTLY 状态时, 子容器限定在这个大小。

    child layoutmodesize
    确定的大小EXACTLYchildSize子View大小可以是自身大小,后期再做确定。
    MATCH_PARENTEXACTLYparentContentSize父容器多大,子View就可以多大。大小为父容器大小。
    WRAP_CONTENTAT_MOSTparentContentSize最大尺寸为父容器尺寸,本身内容不能超过和父容器尺寸。
  • 父容器尺寸处于AT_MOST状态时, 子View尺寸不能超过这个尺寸。

    child layoutmodesize
    确定的大小EXACTLYchildSize子View的大小可以为自身的大小。后期再做确定
    MATCH_PARENTAT_MOSTparentContentSize父容器大小未确定,但子容器想要和父容器一定大。那么确定子View最大可以和父容器一样大。
    WRAP_CONTENTAT_MOSTparentSize子View需要确定自己的尺寸,最大不超过父容器大小。
  • 父容器处于 UNSPECIFIED 状态,需要根据子View的最终大小来确定自己状态。

    child layoutmodesize
    确定的大小EXACTLYchildSize子View尺寸为一个确定大小.
    MATCH_PARENTUNSPECIFIED待定子view根据自身情况,确定大小。
    WRAP_CONTENTUNSPECIFIED待定子View根据自身情况,确定大小。

原文链接:http://www.apkbus.com/blog-705730-61676.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消