標籤:android 布局 padding 填充 viewpager
設計一個介面,整個介面包含一個listview,但是listview不是全部充滿螢幕,如下:
可能會這樣設計布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#2262" android:orientation="vertical" > <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:paddingTop="16dp" > </ListView></LinearLayout>
但是這裡有個問題:滾動時頂部不能填充
這時候就需要
android:clipToPadding 和 android:clipChildren
官方文檔:
clipToPadding:控制項的繪製地區是否在padding裡面, 值為true時padding那麼繪製的地區就不包括padding地區;
定義一個孩子是否僅限於畫裡面的界限。
clipChildren:當ViewGroup的Padding不為0時,定義ViewGroup是否裁剪子孩子的填充。
這兩個屬性預設是true的,所以在設定了padding情況下,預設滾動是在 padding內部的,要達到上面的效果主要把這兩個屬性設定了false那麼這樣子控制項就能畫到padding的地區了。
修改後的代碼
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#2262" android:orientation="vertical" > <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:clipToPadding="false" android:paddingTop="16dp" > </ListView></LinearLayout>
再看效果
Padding與繪製地區--android:clipToPadding和android:clipChildren