Android 中文API (37) —— AbsoluteLayout

前言php

  本章內容是 android.widget.AbsoluteLayout,版本爲Android 2.2 r1,翻譯來自madgoat,歡迎你們訪問他的博客:http://madgoat.cn/ ,再次感謝madgoat !期待你一塊兒參與Android API 的中文翻譯,聯繫我over140@gmail.com。
 html

 

聲明java

  歡迎轉載,但請保留文章原始出處:)
 android

    農民伯伯:http://over140.blog.51cto.com/ide

    Android中文翻譯組:http://www.cnblogs.com/over140/  佈局

 

正文post

  1、結構學習

    public class AbsoluteLayout extends ViewGroupui

 
 

    java.lang.Object編碼

      android.view.View

        android.view.ViewGroup

                       android.widget.AbsoluteLayout

 
 

    此類不同意使用。

    推薦使用FrameLayoutRelativeLayout或者定製的layout代替。

 

  2、概述

 

 

讓你指定子元素的xy精確座標的佈局。絕對佈局缺少靈活性,在沒有絕對定位的狀況下相比其餘類型的佈局更難維護。

 

  3、公共方法

         public ViewGroup.LayoutParams generateLayoutParams (AttributeSet attrs)

  返回一組新的基於所支持的屬性集的佈局參數

   參數

  attrs        構建layout佈局參數的屬性集合

  返回值

        一個ViewGroup.LayoutParams的實例或者它的一個子類 

 

  4、受保護方法
 

         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,座標是(00)的佈局參數

返回值

一組默認的佈局參數或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進行編碼。 

 

  5、補充
 

    文章連接

      個人Android學習之旅[6]——以示例程序來展現Android的幾種佈局方式

                第六講:用戶界面 View(二)

                如何動態改變 AbsoluteLayout佈局中其它佈局的座標

    示例代碼

< 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 >
相關文章
相關標籤/搜索