Android 中文API (37) —— AbsoluteLayout

來源:互聯網
上載者:User

 

前言

  本章內容是 android.widget.AbsoluteLayout,版本為Android 2.2 r1,翻譯來自madgoat,歡迎大家訪問他的部落格:http://madgoat.cn/ ,再次感謝madgoat !期待你一起參與Android API 的中文翻譯,聯絡我over140@gmail.com。

 

聲明

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

    部落格園:http://www.cnblogs.com/

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

 

本文

  一、結構

    public class AbsoluteLayout extends ViewGroup

 

    java.lang.Object

      android.view.View

        android.view.ViewGroup

                       android.widget.AbsoluteLayout

 

    此類不贊成使用。

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

 

  二、概述

    

    讓你指定子項目的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進行編碼。 

 

  五、補充

    文章連結

      我的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>

  

結束

  聲明圖片來自文章1 。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.