1. 程式人生 > 其它 >view中妙用屬性含義記錄

view中妙用屬性含義記錄

技術標籤:androidandroid

文章目錄

clipToPadding

檢視android中對該屬性的註釋

Defines whether the ViewGroup will clip its children and resize (but not clip) any
EdgeEffect to its padding, if padding is not zero. This property is set to true by
default.

自己理解這段話為:該屬性用於定義ViewGroup是否會根據padding屬性重新裁剪和改變子view的大小。

實際測試以後發現,true的時候會Viewgroup會根據padding調整繪製區域,繪製會減去padding的寬度,設定為false的時候,ViewGroup不會調整繪製區域的大小,子view的繪製區域可以包含padding所在的區域。
clipToPadding=true的效果
可以看到view滾動的時候周圍是有留白的padding區域的

clipToPadding=false的效果
可以看到滾動的時候padding部分的留白被子view繪製了

當我們使用recyclerview的時候,如果希望padding區域在滾動的時候不可見,我們可以使用clipToPadding=false,達到這個效果

clipChildren

檢視android中的註釋

Defines whether a child is limited to draw inside of its bounds or not.
This is useful with animations that scale the size of the children to more
than 100% for instance. In such a case, this property should be set to false
to allow the children to draw outside of their bounds. The default value of

this property is true.

該屬性的含義為:是否限制view只能在自己的邊界內繪製。當在執行縮放動畫的時候,view的大小超過100%的時候,可以將這個屬性設定為false,這樣這個view就可以在超出自己顯示區域的邊界外顯示了。
clipChildren=true的效果
圖片沒辦法超出父佈局顯示,被裁剪

佈局程式碼:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/grandfather"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="true"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity_main">

    <LinearLayout
        android:id="@+id/father"
        android:background="#4CAF50"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:orientation="vertical">

        <ImageView
            android:src="@drawable/kite"
            android:layout_width="300dp"
            android:layout_height="300dp" />
    </LinearLayout>
</LinearLayout>

clipChildren=false的效果

佈局程式碼:
將上面佈局程式碼中根佈局中的clipChildren屬性設定為false