天天看點

android:clipToPadding和android:clipChildren

假設我們要做一個效果,界面最頂部是一個ActionBar并且是半透明的,ActionBar下面是一個ListView,在初始狀态 下,ListView是top是在ActionBar的bottom位置的,但當ListView滾動的時候可以透過ActionBar看到下面的 ListView的内容。如下面兩張圖所示:

正常态:

android:clipToPadding和android:clipChildren

滾動态:

android:clipToPadding和android:clipChildren

乍一看,不是很簡單嗎,隻要設定一下marginTop或者paddingTop就可以了,但問題是隻用這兩個其中一個屬性的話,ListView 滑動的時候就不能滾到paddingTop或者marginTop那部分區域,有人說可以用HeaderView來解決,這是其中一個辦法,但僅僅了為這 個占空使用HeadView有點浪費而且會影響onItemClick的position.于是這裡介紹可以到這個效果的兩個屬性,就是 android:clipToPadding和android:clipChildren,這兩個屬性不是太多人用到,這裡說明一下

clipToPadding就是說控件的繪制區域是否在padding裡面的,true的情況下如果你設定了padding那麼繪制的區域就往裡 縮,clipChildren是指子控件是否超過padding區域,這兩個屬性預設是true的,是以在設定了padding情況下,預設滾動是在 padding内部的,要達到上面的效果主要把這兩個屬性設定了false那麼這樣子控件就能畫到padding的區域了。

1 2 3 4 5 6 7 8

<ListView

android:layout_gravity=

"center_vertical"

android:id=

"@+id/list"

android:clipChildren=

"false"

android:clipToPadding=

"false"

android:paddingTop=

"50dip"

android:layout_width=

"match_parent"

android:layout_height=

"match_parent"

>

Actionbar半透明就不詳細說了,隻要設定actionbarOverlay為true并為ActionBar設定一個半透明的background即可.

這個屬性

RecyclerView

也有,是同樣的意思。

繼續閱讀