正文
一、結構
public class AbsoluteLayout extends ViewGroup
java.lang.Object
android.view.ViewGroup
android.widget.AbsoluteLayout
此類不贊成使用。
二、概述
讓你指定子元素的xy精确坐标的布局。絕對布局缺乏靈活性,在沒有絕對定位的情況下相比其他類型的布局更難維護。
三、公共方法
public ViewGroup.LayoutParams generateLayoutParams (AttributeSet attrs)
傳回一組新的基于所支援的屬性集的布局參數
參數
attrs 建構layout布局參數的屬性集合
傳回值
一個ViewGroup.LayoutParams的執行個體或者它的一個子類
四、受保護方法
protected ViewGroup.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)
傳回一組合法的受支援的布局參數。當一個ViewGroup傳遞一個布局參數沒有通過checkLayoutParams(android.view.ViewGroup.LayoutParams)檢測的視圖時,此方法被調用。此方法會傳回一組新的适合目前ViewGroup的布局參數,可能從指定的一組布局參數中複制适當的屬性。
參數
p 被轉換成一組适合目前 ViewGroup的布局參數
傳回值
an instance of ViewGroup.LayoutParams or one of its descendants
一個ViewGroup.LayoutParams的執行個體或者其中的一個子節點
protected boolean checkLayoutParams (ViewGroup.LayoutParams p)
(譯者注:檢測是不是AbsoluteLayout.LayoutParams的執行個體,見源碼:
protected ViewGroup.LayoutParams generateDefaultLayoutParams ()
傳回一組寬度為WRAP_CONTENT,高度為WRAP_CONTENT,坐标是(0,0)的布局參數
一組預設的布局參數或null值
protected void onLayout (boolean changed, int l, int t, int r, int b)
在此視圖view給他的每一個子元素配置設定大小和位置時調用。 派生類可以重寫此方法并且重新安排他們子類的布局。
changed 這是目前視圖view的一個新的大小或位置
l 相對于父節點的左邊位置
t 相對于父節點的頂點位置
r 相對于父節點的右邊位置
b 相對于父節點的底部位置
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
測量視圖以确定其内容寬度和高度。此方法被measure(int, int)調用。需要被子類重寫以提供對其内容準确高效的測量。
約定:當重寫此方法時,你必須調用setMeasuredDimension(int, int)來儲存目前視圖view的寬度和高度。不成功調用此方法将會導緻一個IllegalStateException異常,是由measure(int, int)抛出。是以調用父類的onMeasure(int, int)方法是必須的。
父類的實作是以背景大小為預設大小,除非MeasureSpec(測量細則)允許更大的背景。子類可以重寫onMeasure(int,int)以對其内容提供更佳的尺寸。
如果此方法被重寫,那麼子類的責任是确認測量高度和測量寬度要大于視圖view的最小寬度和最小高度(getSuggestedMinimumHeight() and getSuggestedMinimumWidth()),使用這兩個方法可以取得最小寬度和最小高度。
widthMeasureSpec 強加于父節點的橫向空間要求。要求是使用View.MeasureSpec進行編碼
heightMeasureSpec 強加于父節點的縱向空間要求。要求是使用View.MeasureSpec進行編碼。
五、補充
文章連結
示例代碼
<AbsoluteLayout
android:id="@+id/AbsoluteLayout01" android:layout_height="wrap_content"
android:layout_width="fill_parent" >
<TextView
android:text="TextView01" android:id="@+id/TextView01"
android:layout_height="wrap_content" android:layout_y="10px"
android:layout_width="wrap_content" android:layout_x="110px">
</TextView>
</AbsoluteLayout>
本文轉自over140 51CTO部落格,原文連結:http://blog.51cto.com/over140/582632,如需轉載請自行聯系原作者