Android中關鍵詞的流式布局

2021-07-23 20:15:30 字數 1544 閱讀 4526

1.新建乙個類,繼承於linearlayout,並重寫其構造.

在最開始決定要自己動手寫乙個流式布局之前,想到的是最好是可以動態的在**中設定需要新增的控制項,所以在最開始宣告了乙個集合list,用來承載以後傳入的控制項,並進行流式的布局以及顯示.

2.重寫自定義控制項的onmeasure方法,目的是為了獲取當前正在自定義的控制項的寬度和高度.(主要是在wrap_content下進行測量),在測量之前需要
先把存放每行的行高的集合和存放每行的子控制項的集合進行清空,因為在onmeasure方法中,首先會對當前容器中的所有的子控制項進行遍歷,並根據一
定的規律將這些子控制項以及一些引數分別裝到上述的兩個集合中去.如果不在這裡進行清空的話,當多次呼叫onmeasure方法的時候,會重複的新增內
容.(獲取尺寸模式的操作是為了區分當前控制項是屬於wrap_content還是match_parent或者是指定的尺寸,如果是後兩者,則獲取控制項的寬高非常簡單
,但如果為wrap_conteng的話,需要進行一些邏輯運算)

分別定義乙個儲存最後一行中所有view的集合,以及乙個專門用來儲存最後一行行高的int型變數.如果不定義這樣的乙個集合和這樣的乙個
變數,將導致缺少最後一行的資料.(因為在將每行的view新增到集合中,最後再將集合新增到全域性的list的過程當中,在進行換行的時候才進行新增
,所以這裡要單列出來乙個集合,因為最後一行來不及換行,所以如果不做處理的話,會造成資料的缺失).

3. 遍歷全域性變數中儲存資料的集合,來對存起來的子控制項進行分別的布局操作(在每次換行操作以後,將left重置為0)

4. 最後新增list集合的set方法,以保證在**中可以對新增到布局中的子view進行設定

至此,半抄半寫的情況之下完成了這個功能簡單的自定義控制項,當某個子view的寬度大於父類的寬度時,沒有進行處理.其中不足之處,
還望各位網友進行指正.
附源**:

二 關鍵詞 關鍵詞的選擇(二)

1 內容相關 2 搜尋次數多,競爭小 5 商業價值 一 內容相關 當然,這也不一定試用於某些 比如新聞門戶或者純粹依靠廣告贏利的資訊類 很多門戶類 包羅永珍,內容相關性判斷也比較模糊。對這些 來說,只要有流量,就有一定的價值,並不依靠本身的轉化贏利。二 搜尋次數多,競爭小 一般行業通稱都是國語寬泛的...

Python中關鍵詞用法

new 負責物件的建立,是建構函式,他需要返回乙個例項,它是乙個類的方法 init 負責物件的初始化,負責對 new s例項化的物件進行初始化,即對物件的狀態和屬性進行設定,他不允許有返回值 class student def new cls,name self super new cls prin...

Socket的關鍵詞

socket呼叫庫函式主要有 建立套接字 socket af,type,protocol 建立位址和套接字的聯絡 bind sockid,local addr,addrlen 伺服器端偵聽客戶端的請求 listen sockid quenlen 建立伺服器 客戶端的連線 面向連線tcp 客戶端請求連...