真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中怎么利用ViewGroup自定義布局

今天就跟大家聊聊有關(guān)Android中怎么利用ViewGroup自定義布局,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)公司專注于石城網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供石城營銷型網(wǎng)站建設,石城網(wǎng)站制作、石城網(wǎng)頁設計、石城網(wǎng)站官網(wǎng)定制、成都微信小程序服務,打造石城網(wǎng)絡公司原創(chuàng)品牌,更為您提供石城網(wǎng)站排名全網(wǎng)營銷落地服務。

首先,如果是一個 LinearLayout 那么當設置 wrap_content 時,他就會以子空間中最寬的那個為它的寬度。同時在高度方面會是所有子控件高度的總和。所以我們先寫兩個方法,分別用于測量 ViewGroup 的寬度和高度。

private int getMaxWidth(){  int count = getChildCount();  int maxWidth = 0;  for (int i = 0 ; i < count ; i ++){   int currentWidth = getChildAt(i).getMeasuredWidth();   if (maxWidth < currentWidth){    maxWidth = currentWidth;   }  }  return maxWidth; }  private int getTotalHeight(){  int count = getChildCount();  int totalHeight = 0;  for (int i = 0 ; i < count ; i++){   totalHeight += getChildAt(i).getMeasuredHeight();  }  return totalHeight; }

對于 ViewGroup 而言我們可以粗略的分為兩種模式:固定長寬模式(match_parent),自適應模式(wrap_content),根據(jù)這兩種模式,就可以對 ViewGroup 的繪制進行劃分。這里關(guān)于 measureChildren 這個方法,他是用于將所有的子 View 進行測量,這會觸發(fā)每個子 View 的 onMeasure 函數(shù),但是大家要注意要與 measureChild 區(qū)分,measureChild 是對單個 view 進行測量

@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  super.onMeasure(widthMeasureSpec, heightMeasureSpec);   measureChildren(widthMeasureSpec, heightMeasureSpec);   int widthMode = MeasureSpec.getMode(widthMeasureSpec);  int width  = MeasureSpec.getSize(widthMeasureSpec);  int heightMode= MeasureSpec.getMode(heightMeasureSpec);  int height = MeasureSpec.getSize(heightMeasureSpec);   if (widthMode == MeasureSpec.AT_MOST && heightMode == MeasureSpec.AT_MOST){   int groupWidth = getMaxWidth();   int groupHeight= getTotalHeight();    setMeasuredDimension(groupWidth, groupHeight);  }else if (widthMode == MeasureSpec.AT_MOST){   setMeasuredDimension(getMaxWidth(), height);  }else if (heightMode == MeasureSpec.AT_MOST){   setMeasuredDimension(width, getTotalHeight());  } }

重寫 onLayout

整完上面這些東西,我們的布局大小七十九已經(jīng)出來了,然我們在活動的布局文件里面加上它,并添加上幾個子 View 然后運行一下,先看看效果:

 

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部