日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android角落 不妨再看LinearLayout

發布時間:2024/4/13 Android 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android角落 不妨再看LinearLayout 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文首發于github,是我所在的組LittleFriendsGroup的一個源碼分析項目哦,如果您感興趣,也可以去認領一篇文章寫寫你的觀點。

聲明.本項目源碼基于Api 23

1.談談LinearLayout

Android的常用布局里,LinearLayout屬于使用頻率很高的布局。RelativeLayout也是,但相比于RelativeLayout每個子控件都需要給上ID以供另一個相關控件擺放位置來說,LinearLayout兩個方向上的排列規則在明顯垂直/水平排列情況下使用更加方便。

同時,出于性能上來說,一般而言功能越復雜的布局,性能也是越低的(不考慮嵌套的情況下)。

相比于RelativeLayout無論如何都是兩次測量的情況下,LinearLayout只有子控件設置了weight屬性時,才會有二次測量,其余情況都是一次。

另外,LinearLayout的高級用法除了weight,還有divider,baselineAligned等用法,雖然用的不常見就是了。

以下是LinearLayout相比于其他布局所擁有的特性:

屬性值類型描述備注
orientationint作為LinearLayout必須使用的屬性之一,支持縱向排布或者水平排布子控件
weightSumfloat指定權重總和缺省值為1.0
baselineAlignedboolean基線對齊
baselineAlignedChildIndexint該LinearLayout下的view以某個繼承TextView的View的基線對齊
measureWithLargestChildboolean當值為true,所有帶權重屬性的View都會使用最大View的最小尺寸
divider(需要配合showDividers使用)drawable in java/reference in xml如同您常在ListView使用一樣,為LinearLayout添加分割線[api>11] 同時如果是自己建立的drawable,請指定size

【注意】divider附加屬性為showDividers(middle|end|beginning|none):

  • middle 在每兩項之間添加分割線
  • end 在整體的最后一項添加分割線
  • beginning 在整體的首項添加分割線
  • none 無

本篇主要針對LinearLayout垂直方向的測量、weight和divider進行分析,其余屬性因為比較冷門,因此不會詳說


2.使用方法

對于LinearLayout的使用,相信您閉著眼睛都能寫出來,因此這里就略過了。


3.源碼分析

源碼分析階段主要針對這幾個地方:

  • measure流程
  • weight的計算

后兩者的主要工作其實都是被包含在measure里面的,因此對于LinearLayout來說,最重要的,依然是measure.

3.1 measure

在LinearLayout的onMeasure()里面,所有的測量都根據mOrientation這個int值來進行水平或者垂直的測量計算。

我們都知道,java中int在初始化不分配值的時候,都是默認的0,因此如果我們不指定orientation,measure則會按照水平方向來測量【水平orientation=0/垂直orientation=1】

接下來我們主要看看measureVertical方法,了解了垂直方向的測量之后,水平方向的也就不難理解了,為了篇幅,我們主要分析垂直方向的測量。

measureVertical方法除去注釋,大概200多行,因此我們分段分析。

方法主要分為三大塊:

  • 一大堆變量
  • 一個主要的for循環來不斷測量子控件
  • 其余參數影響以及根據是否有weight再次測量
3.1.1

一大堆變量

為何這里要說說變量,因為這些變量都會極大的影響到后面的測量,同時也是十分容易混淆的,所以這里需要貼一下。

void measureVertical(int widthMeasureSpec, int heightMeasureSpec) {// mTotalLength作為LinearLayout成員變量,其主要目的是在測量的時候通過累加得到所有子控件的高度和(Vertical)或者寬度和(Horizontal)mTotalLength = 0;// maxWidth用來記錄所有子控件中控件寬度最大的值。int maxWidth = 0;// 子控件的測量狀態,會在遍歷子控件測量的時候通過combineMeasuredStates來合并上一個子控件測量狀態與當前遍歷到的子控件的測量狀態,采取的是按位相或int childState = 0;/*** 以下兩個最大寬度跟上面的maxWidth最大的區別在于matchWidthLocally這個參數* 當matchWidthLocally為真,那么以下兩個變量只會跟當前子控件的左右margin和相比較取大值* 否則,則跟maxWidth的計算方法一樣*/// 子控件中layout_weight<=0的View的最大寬度int alternativeMaxWidth = 0;// 子控件中layout_weight>0的View的最大寬度int weightedMaxWidth = 0;// 是否子控件全是match_parent的標志位,用于判斷是否需要重新測量boolean allFillParent = true;// 所有子控件的weight之和float totalWeight = 0;// 如您所見,得到所有子控件的數量,準確的說,它得到的是所有同級子控件的數量// 在官方的注釋中也有著對應的例子// 比如TableRow,假如TableRow里面有N個控件,而LinearLayout(TableLayout也是繼承LinearLayout哦)下有M個TableRow,那么這里返回的是M,而非M*N// 但實際上,官方似乎也只是直接返回getChildCount(),起這個方法名的原因估計是為了讓人更加的明白,畢竟如果是getChildCount()可能會讓人誤認為為什么沒有返回所有(包括不同級)的子控件數量final int count = getVirtualChildCount();// 得到測量模式final int widthMode = MeasureSpec.getMode(widthMeasureSpec);final int heightMode = MeasureSpec.getMode(heightMeasureSpec);// 當子控件為match_parent的時候,該值為ture,同時判定的還有上面所說的matchWidthLocally,這個變量決定了子控件的測量是父控件干預還是填充父控件(剩余的空白位置)。boolean matchWidth = false;boolean skippedMeasure = false;final int baselineChildIndex = mBaselineAlignedChildIndex; final boolean useLargestChild = mUseLargestChild;int largestChildHeight = Integer.MIN_VALUE;} 復制代碼

這里有很多變量和值,事實上,直到現在,我依然沒有完全弄明白這些值的意義。

在這一大堆變量里面,我們主要留意的是三個方面:

  • mTotalLength:這個就是最終得到的整個LinearLayout的高度(子控件高度累加及自身padding)
  • 三個跟width相關的變量
  • weight相關的變量

3.1.2

測量

通過for循環不斷的得到子控件然后根據自己的定義進行賦值,這就是LinearLayout測量里面最重要的一步。

這里的代碼比較長,去掉注釋后有100行左右,因此這里采取重要地方注釋結合文字描述來分析。

void measureVertical(int widthMeasureSpec, int heightMeasureSpec) {// ...接上面的一大堆變量for (int i = 0; i < count; ++i) {final View child = getVirtualChildAt(i);if (child == null) {// 目前而言,measureNullChild()方法返回的永遠是0,估計是設計者留下來以后或許有補充的。mTotalLength += measureNullChild(i);continue;}if (child.getVisibility() == GONE) {// 同上,返回的都是0。// 事實上這里的意思應該是當前遍歷到的View為Gone的時候,就跳過這個View,下一句的continue關鍵字也正是這個意思。// 忽略當前的View,這也就是為什么Gone的控件不占用布局資源的原因。(畢竟根本沒有分配空間)i += getChildrenSkipCount(child, i);continue;}// 根據showDivider的值(before/middle/end)來決定遍歷到當前子控件時,高度是否需要加上divider的高度// 比如showDivider為before,那么只會在第0個子控件測量時加上divider高度,其余情況下都不加if (hasDividerBeforeChildAt(i)) {mTotalLength += mDividerWidth;}final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)child.getLayoutParams();// 得到每個子控件的LayoutParams后,累加權重和,后面用于跟weightSum相比較totalWeight += lp.weight;// 我們都知道,測量模式有三種:// * UNSPECIFIED:父控件對子控件無約束// * Exactly:父控件對子控件強約束,子控件永遠在父控件邊界內,越界則裁剪。如果要記憶的話,可以記憶為有對應的具體數值或者是Match_parent// * AT_Most:子控件為wrap_content的時候,測量值為AT_MOST。// 下面的if/else分支都是跟weight相關if (heightMode == MeasureSpec.EXACTLY && lp.height == 0 && lp.weight > 0) {// 這個if里面需要滿足三個條件:// * LinearLayout的高度為match_parent(或者有具體值)// * 子控件的高度為0// * 子控件的weight>0// 這其實就是我們通常情況下用weight時的寫法// 測量到這里的時候,會給個標志位,稍后再處理。此時會計算總高度final int totalLength = mTotalLength;mTotalLength = Math.max(totalLength, totalLength + lp.topMargin + lp.bottomMargin);skippedMeasure = true;} else {// 到這個分支,則需要對不同的情況進行測量int oldHeight = Integer.MIN_VALUE;if (lp.height == 0 && lp.weight > 0) {// 滿足這兩個條件,意味著父類即LinearLayout是wrap_content,或者mode為UNSPECIFIED// 那么此時將當前子控件的高度置為wrap_content// 為何需要這么做,主要是因為當父類為wrap_content時,其大小實際上由子控件控制// 我們都知道,自定義控件的時候,通常我們會指定測量模式為wrap_content時的默認大小// 這里強制給定為wrap_content為的就是防止子控件高度為0.oldHeight = 0;lp.height = LayoutParams.WRAP_CONTENT;}/**【1】*/// 下面這句雖然最終調用的是ViewGroup通用的同名方法,但傳入的height值是跟平時不一樣的// 這里可以看到,傳入的height是跟weight有關,關于這里,稍后的文字描述會著重闡述measureChildBeforeLayout(child, i, widthMeasureSpec, 0, heightMeasureSpec,totalWeight == 0 ? mTotalLength : 0);// 重置子控件高度,然后進行精確賦值if (oldHeight != Integer.MIN_VALUE) {lp.height = oldHeight;}final int childHeight = child.getMeasuredHeight();final int totalLength = mTotalLength;// getNextLocationOffset返回的永遠是0,因此這里實際上是比較child測量前后的總高度,取大值。mTotalLength = Math.max(totalLength, totalLength + childHeight + lp.topMargin +lp.bottomMargin + getNextLocationOffset(child));if (useLargestChild) {largestChildHeight = Math.max(childHeight, largestChildHeight);}}if ((baselineChildIndex >= 0) && (baselineChildIndex == i + 1)) {mBaselineChildTop = mTotalLength;}if (i < baselineChildIndex && lp.weight > 0) {throw new RuntimeException("A child of LinearLayout with index "+ "less than mBaselineAlignedChildIndex has weight > 0, which "+ "won't work. Either remove the weight, or don't set "+ "mBaselineAlignedChildIndex.");}boolean matchWidthLocally = false;// 還記得我們變量里又說到過matchWidthLocally這個東東嗎// 當父類(LinearLayout)不是match_parent或者精確值的時候,但子控件卻是一個match_parent// 那么matchWidthLocally和matchWidth置為true// 意味著這個控件將會占據父類(水平方向)的所有空間if (widthMode != MeasureSpec.EXACTLY && lp.width == LayoutParams.MATCH_PARENT) {matchWidth = true;matchWidthLocally = true;}final int margin = lp.leftMargin + lp.rightMargin;final int measuredWidth = child.getMeasuredWidth() + margin;maxWidth = Math.max(maxWidth, measuredWidth);childState = combineMeasuredStates(childState, child.getMeasuredState());allFillParent = allFillParent && lp.width == LayoutParams.MATCH_PARENT;if (lp.weight > 0) {weightedMaxWidth = Math.max(weightedMaxWidth,matchWidthLocally ? margin : measuredWidth);} else {alternativeMaxWidth = Math.max(alternativeMaxWidth,matchWidthLocally ? margin : measuredWidth);}i += getChildrenSkipCount(child, i);}} 復制代碼

在代碼中我注釋了一部分,其中最值得注意的是measureChildBeforeLayout()方法。這個方法將會決定子控件可用的剩余分配空間。

measureChildBeforeLayout()最終調用的實際上是ViewGroup的measureChildWithMargins(),不同的是,在傳入高度值的時候(垂直測量情況下),會對weight進行一下判定

假如當前子控件的weight加起來還是為0,則說明在當前子控件之前還沒有遇到有weight的子控件,那么LinearLayout將會進行正常的測量,若之前遇到過有weight的子控件,那么LinearLayout傳入0。

那么measureChildWithMargins()的最后一個參數,也就是LinearLayout在這里傳入的這個高度值是用來干嘛的呢?

如果我們追溯下去,就會發現,這個函數最終其實是為了結合父類的MeasureSpec以及child自身的LayoutParams來對子控件測量。而最后傳入的值,在子控件測量的時候被添加進去。

protected void measureChildWithMargins(View child,int parentWidthMeasureSpec, int widthUsed,int parentHeightMeasureSpec, int heightUsed) {final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();final int childWidthMeasureSpec = getChildMeasureSpec(parentWidthMeasureSpec,mPaddingLeft + mPaddingRight + lp.leftMargin + lp.rightMargin+ widthUsed, lp.width);final int childHeightMeasureSpec = getChildMeasureSpec(parentHeightMeasureSpec,mPaddingTop + mPaddingBottom + lp.topMargin + lp.bottomMargin+ heightUsed, lp.height);child.measure(childWidthMeasureSpec, childHeightMeasureSpec);} 復制代碼

在官方的注釋中,我們可以看到這么一句:

  • @param heightUsed Extra space that has been used up by the parent vertically (possibly by other children of the parent)

事實上,我們在代碼中也可以很清晰的看到,在getChildMeasureSpec()中,子控件需要把父控件的padding,自身的margin以及一個可調節的量三者一起測量出自身的大小。

那么假如在測量某個子控件之前,weight一直都是0,那么該控件在測量時,需要考慮在本控件之前的總高度,來根據剩余控件分配自身大小。而如果有weight,那么就不考慮已經被占用的控件,因為有了weight,子控件的高度將會在后面重新賦值。


3.2 weight

3.2.1

weight的再次測量

在上面的代碼中,LinearLayout做了針對沒有weight的工作,在這里主要是確定自身的大小,然后再針對weight進行第二次測量來確定子控件的大小。

我們接著看下面的代碼:

void measureVertical(int widthMeasureSpec, int heightMeasureSpec) {//...接上面// 下面的這一段代碼主要是為useLargestChild屬性服務的,不在本文主要分析范圍,略過if (mTotalLength > 0 && hasDividerBeforeChildAt(count)) {mTotalLength += mDividerHeight;}if (useLargestChild &&(heightMode == MeasureSpec.AT_MOST || heightMode == MeasureSpec.UNSPECIFIED)) {mTotalLength = 0;for (int i = 0; i < count; ++i) {final View child = getVirtualChildAt(i);if (child == null) {mTotalLength += measureNullChild(i);continue;}if (child.getVisibility() == GONE) {i += getChildrenSkipCount(child, i);continue;}final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)child.getLayoutParams();// Account for negative marginsfinal int totalLength = mTotalLength;mTotalLength = Math.max(totalLength, totalLength + largestChildHeight +lp.topMargin + lp.bottomMargin + getNextLocationOffset(child));}}// Add in our paddingmTotalLength += mPaddingTop + mPaddingBottom;int heightSize = mTotalLength;// Check against our minimum heightheightSize = Math.max(heightSize, getSuggestedMinimumHeight());// Reconcile our calculated size with the heightMeasureSpecint heightSizeAndState = resolveSizeAndState(heightSize, heightMeasureSpec, 0);heightSize = heightSizeAndState & MEASURED_SIZE_MASK;} 復制代碼

上面這里是為weight情況做的預處理。

我們略過useLargestChild 的情況,主要看看if處理外的代碼。在這里,我沒有去掉官方的注釋,而是保留了下來。

從中我們不難看出heightSize做了兩次賦值,為何需要做兩次賦值。

因為我們的布局除了子控件,還有自己本身的background,因此這里需要比較當前的子控件的總高度和背景的高度取大值。

接下來就是判定大小,我們都知道測量的MeasureSpec實際上是一個32位的int,高兩位是測量模式,剩下的就是大小,因此heightSize = heightSizeAndState & MEASURED_SIZE_MASK;作用就是用來得到大小的精確值(不含測量模式)

接下來我們看這個方法里面第二占比最大的代碼:

void measureVertical(int widthMeasureSpec, int heightMeasureSpec) {//...接上面//算出剩余空間,假如之前是skipp的話,那么幾乎可以肯定是有剩余空間(同時有weight)的int delta = heightSize - mTotalLength;if (skippedMeasure || delta != 0 && totalWeight > 0.0f) {// 限定weight總和范圍,假如我們給過weighSum范圍,那么子控件的weight總和受此影響float weightSum = mWeightSum > 0.0f ? mWeightSum : totalWeight;mTotalLength = 0;for (int i = 0; i < count; ++i) {final View child = getVirtualChildAt(i);if (child.getVisibility() == View.GONE) {continue;}LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) child.getLayoutParams();float childExtra = lp.weight;if (childExtra > 0) {// 全篇最精華的一個地方。。。。擁有weight的時候計算方式,ps:執行到這里時,child依然還沒進行自身的measure// 公式 = 剩余高度*(子控件的weight/weightSum),也就是子控件的weight占比*剩余高度int share = (int) (childExtra * delta / weightSum);// weightSum計余weightSum -= childExtra;// 剩余高度delta -= share;final int childWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec,mPaddingLeft + mPaddingRight +lp.leftMargin + lp.rightMargin, lp.width);if ((lp.height != 0) || (heightMode != MeasureSpec.EXACTLY)) {int childHeight = child.getMeasuredHeight() + share;if (childHeight < 0) {childHeight = 0;}child.measure(childWidthMeasureSpec,MeasureSpec.makeMeasureSpec(childHeight, MeasureSpec.EXACTLY));} else {child.measure(childWidthMeasureSpec,MeasureSpec.makeMeasureSpec(share > 0 ? share : 0,MeasureSpec.EXACTLY));}childState = combineMeasuredStates(childState, child.getMeasuredState()& (MEASURED_STATE_MASK>>MEASURED_HEIGHT_STATE_SHIFT));}final int margin = lp.leftMargin + lp.rightMargin;final int measuredWidth = child.getMeasuredWidth() + margin;maxWidth = Math.max(maxWidth, measuredWidth);boolean matchWidthLocally = widthMode != MeasureSpec.EXACTLY &&lp.width == LayoutParams.MATCH_PARENT;alternativeMaxWidth = Math.max(alternativeMaxWidth,matchWidthLocally ? margin : measuredWidth);allFillParent = allFillParent && lp.width == LayoutParams.MATCH_PARENT;final int totalLength = mTotalLength;mTotalLength = Math.max(totalLength, totalLength + child.getMeasuredHeight() +lp.topMargin + lp.bottomMargin + getNextLocationOffset(child));}mTotalLength += mPaddingTop + mPaddingBottom;} // 沒有weight的情況下,只看useLargestChild參數,如果都無相關,那就走layout流程了,因此這里忽略else {alternativeMaxWidth = Math.max(alternativeMaxWidth,weightedMaxWidth);if (useLargestChild && heightMode != MeasureSpec.EXACTLY) {for (int i = 0; i < count; i++) {final View child = getVirtualChildAt(i);if (child == null || child.getVisibility() == View.GONE) {continue;}final LinearLayout.LayoutParams lp =(LinearLayout.LayoutParams) child.getLayoutParams();float childExtra = lp.weight;if (childExtra > 0) {child.measure(MeasureSpec.makeMeasureSpec(child.getMeasuredWidth(),MeasureSpec.EXACTLY),MeasureSpec.makeMeasureSpec(largestChildHeight,MeasureSpec.EXACTLY));}}}} } 復制代碼

3.2.2

weight的兩種情況

這次我的注釋比較少,主要是因為需要有一大段的文字來描述。

在weight計算方面,我們可以清晰的看到,weight為何是針對剩余空間進行分配的原理了。 我們打個比方,假如現在我們的LinearLayout的weightSum=10,總高度100,有兩個子控件(他們的height=0dp),他們的weight分別為2:8。

那么在測量第一個子控件的時候,可用的剩余高度為100,第一個子控件的高度則是100*(2/10)=20,接下來可用的剩余高度為80

我們繼續第二個控件的測量,此時它的高度實質上是80*(8/8)=80

到目前為止,看起來似乎都是正確的,但關于weight我們一直有一個疑問:**就是我們為子控件給定height=0dp和height=match_parent時我們就會發現我們的子控件的高度比是不同的,前者是2:8而后者是調轉過來變成8:2 **

對于這個問題,我們不妨繼續看看代碼。

接下來我們會看到這么一個分支:

if ((lp.height != 0) || (heightMode != MeasureSpec.EXACTLY)) { } else {}

首先我們不管heightMode,也就是父類的測量模式,剩下一個判定條件就是lp.height,也就是子類的高度。

既然有針對這個進行判定,那就是意味著肯定在此之前對child進行過measure,事實上,在這里我們一早就對這個地方進行過描述,這個方法正是measureChildBeforeLayout()。

還記得我們的measureChildBeforeLayout()執行的先行條件嗎

YA,just u see,正是不滿足(LinearLayout的測量模式非EXACTLY/child.height==0/child.weight/child.weight>0)之中的child.height==0

因為除非我們指定height=0,否則match_parent是等于-1,wrap_content是等于-2.

在執行measureChildBeforeLayout(),由于我們的child的height=match_parent,因此此時可用空間實質上是整個LinearLayout,執行了measureChildBeforeLayout()后,此時的mTotalLength是整個LinearLayout的大小

回到我們的例子,假設我們的LinearLayout高度為100,兩個child的高度都是match_parent,那么執行了measureChildBeforeLayout()后,我們兩個子控件的高度都將會是這樣:

child_1.height=100

child_2.height=100

mTotalLength=100+100=200

在一系列的for之后,執行到我們剩余空間:

int delta = heightSize - mTotalLength;

(delta=100[linearlayout的實際高度]-200=-100)

沒錯,你看到的的確是一個負數。

接下來就是套用weight的計算公式:

share=(int) (childExtra * delta / weightSum)

即:share=-100(2/10)=-20;*

然后走到我們所說的if/else里面

if ((lp.height != 0) || (heightMode != MeasureSpec.EXACTLY)) {// child was measured once already above...// base new measurement on stored valuesint childHeight = child.getMeasuredHeight() + share;if (childHeight < 0) {childHeight = 0;}child.measure(childWidthMeasureSpec,MeasureSpec.makeMeasureSpec(childHeight, MeasureSpec.EXACTLY));} 復制代碼

我們知道**child.getMeasuredHeight()=100**

接著這里有一條int childHeight = child.getMeasuredHeight() + share;

這意味著我們的**childHeight=100+(-20)=80;**

接下來就是走child.measure,并把childHeight傳進去,因此最終反饋到界面上,我們就會發現,在兩個match_parent的子控件中,weight的比是反轉的。

接下來沒什么分析的,剩下的就是走layout流程了,對于layout方面,要講的其實沒什么東西,畢竟基本都是模板化的寫法了。


4.小結

在這里,我們花費了大篇幅講解measureVertical()的流程,事實上對于LinearLayout來說,其最大的特性也正是兩個方向的排布以及weight的計算方式。

在這里我們不妨回過頭看一下,其實我們會發現在測量過程中,設計者總是有意分開含有weight和不含有weight的測量方式,同時利用height跟0比較來更加的細分每一種情況。

可能初看的時候覺得代碼太多,事實上一輪分析下來,方向還是很清晰的。畢竟有weight的地方前期都給個標志跳過,在測量完需要的數據(比如父控件的總高度什么的)后,再根據父控件的數據和weight再針對進行二次測量。

在文章的最后,我們小結一下對于測量這里的算法的不同情況下的區別以及原理:

  • 父控件是match_parent(或者精確值),子控件擁有weight,并且高度給定為0:

    • 子控件的高度比例將會跟我們分配的layout_weight一致,原因在于weight二次測量時走了else分支,傳入的是計算出來的share值
  • 父控件是match_parent(或者精確值),子控件擁有weight,但高度給定為match_parent(或者精確值):

    • 子控件高度比例將會跟我們分配的layout_weight相反,原因在于在此之前子控件測量過一次,同時子控件的測量高度為父控件的高度,在計算剩余空間的時候得出一個負值,加上自身的測量高度的時候反而更小
  • 父控件是wrap_content,子控件擁有weight:

    • 子控件的高度將會強行置為其wrap_content給的值并以wrap_content模式進行測量
  • 父控件是wrap_content,子控件沒有weight:

    • 子控件的高度跟其他的viewgroup一致

至此,LinearLayout針對measure的解析到此結束

感謝您的觀閱讀。

因為本人能力經驗有限,有些地方可能分析錯誤,如果您發現了,在下非常歡迎督促指正喲。

簡書:羽翼君

總結

以上是生活随笔為你收集整理的Android角落 不妨再看LinearLayout的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

99视频这里只有 | 看av免费| 日韩欧美视频在线播放 | 亚洲五月六月 | 日韩av中文在线 | 69视频网站 | 日本特黄特色aaa大片免费 | 久久夜夜爽 | 国产理论片在线观看 | 免费一区在线 | 青青河边草观看完整版高清 | 人人爽影院 | 久久免费视频在线 | 国产成人亚洲在线观看 | 一本一道久久a久久精品蜜桃 | 99re热精品视频 | 最近中文字幕免费av | 久久精品1区 | 毛片.com| www.com久久久 | 国产不卡在线看 | 激情欧美国产 | 久久免费电影网 | 色综合久久综合 | 国际精品网 | 国产日韩精品久久 | 亚洲欧美999 | 欧美激情精品久久久久 | 国产成人精品电影久久久 | 成人黄色小说网 | 西西44人体做爰大胆视频 | 亚洲情婷婷 | 成年人黄色免费视频 | 亚洲一级黄色av | 国产亚洲精品无 | 手机成人av在线 | 国产精品久久久久久久久久久久午 | 黄色aa久久 | 日韩三级视频在线看 | 黄色特一级片 | 色多多视频在线 | 欧美日产在线观看 | 日日狠狠 | 成人精品视频久久久久 | 欧美老少交 | 丁香久久激情 | 精品国产免费看 | 精品在线二区 | 国产成人精品一区二区三区网站观看 | 中文字幕成人 | 91大神精品视频在线观看 | 香蕉在线视频播放网站 | 99爱在线观看 | 一区二区三区久久 | 一二区电影 | 国内精品久久久久国产 | 色99在线| 亚洲涩涩一区 | 欧美日韩在线视频免费 | 99久久婷婷国产精品综合 | 国产精品成人一区二区三区吃奶 | 日本aa在线 | 亚洲天堂精品 | 激情自拍av| 免费av的网站 | 精品国产一区二区三区久久久蜜臀 | 国产精品久久久久久久99 | 国产99亚洲 | 亚洲激情一区二区三区 | 久久艹国产视频 | 久久久久电影 | av中文在线观看 | 麻豆你懂的 | 91免费国产在线观看 | 亚洲毛片一区二区三区 | 夜夜爽88888免费视频4848 | 亚洲传媒在线 | 国产精久久久久久久 | 欧美亚洲成人免费 | 日韩成年视频 | 91资源在线免费观看 | 国产小视频免费在线观看 | 日韩欧美在线国产 | av中文在线| 亚洲最大的av网站 | 丁香花在线观看视频在线 | 99精品欧美一区二区三区 | 一级免费片| 午夜精品福利在线 | 亚洲v欧美v国产v在线观看 | 极品久久久 | 国产黄色av网站 | 久久视频这里有久久精品视频11 | 久久国产亚洲 | 日韩字幕 | 日本在线视频一区二区三区 | 国产成人久久精品一区二区三区 | 欧美日韩亚洲第一 | 久久久久久国产精品免费 | 成人av在线影院 | 99精品国产一区二区三区麻豆 | a级片网站 | 超碰97国产在线 | 精品国产乱码一区二 | 久久精品欧美一区 | 一区二区精品国产 | 国产精品第52页 | 992tv在线观看 | 亚洲午夜大片 | 一本色道久久精品 | 国产精品情侣视频 | 国内精品视频在线播放 | 在线黄色国产电影 | 久久国产视频网站 | 天天射天天干天天爽 | 麻豆精品视频在线观看免费 | 亚洲最大色 | 日韩有色 | 久久网站最新地址 | 久久精品老司机 | 日韩精品不卡在线 | 成人午夜电影久久影院 | 国产一区二区三区四区大秀 | www免费 | 亚洲日b视频 | 日韩av午夜在线观看 | 18性欧美xxxⅹ性满足 | 午夜美女福利 | 国产最新在线观看 | 日本精品久久久久中文字幕 | 国产99久久久精品 | 日韩电影在线观看中文字幕 | 8x成人免费视频 | 中文字幕av全部资源www中文字幕在线观看 | 国产免费久久精品 | 欧美日韩啪啪 | 成人精品一区二区三区中文字幕 | 国产精品尤物视频 | 手机成人免费视频 | 国产精品一区免费观看 | 久久成人高清视频 | 日本韩国精品在线 | 精品在线观 | 国产在线观看你懂得 | 色综合狠狠干 | 色综合久久66 | 日本久久成人 | 午夜精品久久久久久久99 | 日韩黄色网络 | 久久久久久网址 | 国产视频二区三区 | 麻豆极品| 韩国三级av在线 | 高清不卡一区二区在线 | 天天干 夜夜操 | 欧美日韩高清一区二区三区 | 日韩理论片中文字幕 | 欧美精品在线观看一区 | 国产福利一区在线观看 | 久草在线最新视频 | 天天做日日爱夜夜爽 | 97免费视频在线播放 | 久久99精品久久久久久清纯直播 | 91最新在线| 久久免费福利 | 97超碰在线久草超碰在线观看 | 免费观看一级特黄欧美大片 | 91成人天堂久久成人 | 免费网站黄 | 91黄色在线看 | 久久综合九色欧美综合狠狠 | 亚洲香蕉视频 | 在线91播放 | 精品国产一区二区三区久久久蜜月 | 手机av在线网站 | 色婷婷av一区二 | 不卡av电影在线 | 精品一区在线看 | 国产资源 | 久久桃花网 | 日韩成人在线一区二区 | 大荫蒂欧美视频另类xxxx | 91色偷偷 | 国产成人福利在线观看 | 在线中文字幕一区二区 | 色夜影院 | 免费在线播放黄色 | 玖玖在线播放 | 精品一区精品二区高清 | 99精品一区二区 | 伊人天天狠天天添日日拍 | 97国产大学生情侣酒店的特点 | 欧美综合在线视频 | 久久精品99精品国产香蕉 | 精品久久久久久久久久久久久久久久 | 成人a视频在线观看 | 日韩精品五月天 | 久久精品99久久久久久 | 区一区二区三在线观看 | 性色av免费看 | 天天操天天干天天爽 | 五月婷婷丁香综合 | 国产精品久久久久久久av电影 | 毛片二区| 黄色三级网站 | 免费在线观看视频一区 | 在线观看成人毛片 | 色妞色视频一区二区三区四区 | 日本高清xxxx | 国内外成人在线视频 | 国产日韩欧美在线看 | 91精品国产九九九久久久亚洲 | 成人片在线播放 | 亚洲成成品网站 | 成年人在线观看视频免费 | 91中文字幕永久在线 | 国产高清精品在线观看 | 国产精品白丝jk白祙 | 六月激情丁香 | 九九热久久免费视频 | 久久国产免 | 亚洲精品乱码久久久一二三 | 在线观看亚洲a | 国产 日韩 欧美 自拍 | 成人蜜桃视频 | 人人射人人射 | 日韩二三区| 国产精品国产三级国产不产一地 | 国产精品欧美久久久久三级 | 免费在线观看成年人视频 | 国产手机视频 | 天天干天天想 | 免费合欢视频成人app | 在线观看免费av网 | 国产精品久久免费看 | 91热这里只有精品 | 99在线国产| 99夜色| japanese黑人亚洲人4k | 五月婷婷影视 | 精品国产乱码久久久久久1区2匹 | 97人人模人人爽人人喊中文字 | 日韩av一区二区三区在线观看 | 亚洲丝袜一区 | 欧美一区二区三区在线播放 | 日韩免费视频观看 | 久久综合久久综合久久 | 国产小视频福利在线 | 久久影视网 | 亚洲三级毛片 | 九九免费观看全部免费视频 | 亚洲精品乱码 | 午夜av在线免费 | 日韩毛片久久久 | 欧美激情xxxx性bbbb | 国内精品久久久久影院一蜜桃 | 四虎成人在线 | 中文字幕一二三区 | av在线播放亚洲 | 久久艹免费 | 精品一区二区电影 | 99视频免费在线观看 | 国产成人精品国内自产拍免费看 | 成人av免费| 91看国产| 黄色大全免费网站 | 国产色视频一区二区三区qq号 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美日韩国产一区二区三区 | 国产精品涩涩屋www在线观看 | 日韩欧美视频在线观看免费 | 综合激情网... | 国产资源在线免费观看 | 国产专区第一页 | www.av在线.com | 国产午夜影院 | 亚洲综合成人婷婷小说 | 日韩中文字幕免费视频 | 亚洲天堂网视频在线观看 | 免费在线观看视频a | 日韩com| 日韩a在线播放 | 久久久精品欧美 | 久久九九久久 | 91理论片午午伦夜理片久久 | 亚洲精品视频在线 | 国内丰满少妇猛烈精品播放 | 久久精品综合一区 | 国产高清视频免费观看 | 国产不卡精品 | 久草在线99| 天天爽天天做 | 中文字幕亚洲在线观看 | 国产色秀视频 | 夜夜视频资源 | 99草在线视频 | 亚洲h色精品 | 久久精品亚洲精品国产欧美 | 久久精品www人人爽人人 | 天天操天天舔天天干 | 999国产在线 | 欧美中文字幕久久 | 伊人伊成久久人综合网站 | 波多野结衣久久精品 | 欧美精品一二三 | 国产精品麻豆三级一区视频 | 人人舔人人射 | 午夜色大片在线观看 | 91精品视频导航 | 波多野结衣在线视频一区 | 久久经典视频 | 亚洲经典视频在线观看 | 亚欧洲精品视频在线观看 | 色94色欧美| 日韩精品短视频 | 日日久视频 | 毛片网在线播放 | 粉嫩av一区二区三区免费 | 国产二级视频 | 摸bbb搡bbb搡bbbb | 亚洲japanese制服美女 | 亚洲黄色免费网站 | av久久在线 | 亚洲一区二区三区毛片 | 97手机电影网| 欧美一区,二区 | 免费h精品视频在线播放 | 欧美精品久久久久久久亚洲调教 | 久久精品中文 | 中文字幕a∨在线乱码免费看 | 国产午夜一区 | 久久久久久国产精品免费 | www五月天婷婷 | 91在线免费视频 | 九九免费在线视频 | 黄色av一级片 | 又黄又网站| 久草爱| 99热这里精品 | 伊人五月综合 | 色在线免费观看 | 久久久黄视频 | 香蕉影院在线播放 | 在线观看视频黄色 | 婷婷综合伊人 | 97av视频| 国产中文字幕免费 | 亚洲春色综合另类校园电影 | 天天操天天干天天爱 | 人成在线免费视频 | 国产免费三级在线观看 | 久久黄色成人 | 欧美精品久久 | 国产精品ssss在线亚洲 | 色天天 | 黄色av影院| 香蕉影院在线观看 | 国产三级午夜理伦三级 | 精品国产中文字幕 | 成人av电影免费观看 | 国产精品二区在线观看 | 日韩网 | 国产精品毛片久久久久久久久久99999999 | 国产精品 久久 | 久久久99国产精品免费 | 日韩91在线 | 中文字幕 婷婷 | 国产高清视频在线播放 | 久久资源总站 | 九九视频在线 | 91av视频播放 | 日韩免费在线观看视频 | 久久午夜鲁丝片 | 人人讲下载 | 99综合电影在线视频 | 操高跟美女| av综合站| 最近av在线 | 久久久久国产精品免费 | 国产成人精品aaa | 日韩电影一区二区在线观看 | 人人爽人人爽 | 丝袜少妇在线 | 久久久久福利视频 | 视频一区二区在线观看 | 欧美欧美 | 日精品 | 欧美大片mv免费 | 欧美调教网站 | 成人资源站 | 麻豆国产在线视频 | 成年人视频在线免费播放 | 在线观看一 | 久久综合免费视频 | 一区二区三区三区在线 | 欧美激情在线网站 | 国产精品久久久久久久久久新婚 | 日本不卡久久 | 欧美日韩免费观看一区=区三区 | 中文字幕在线观看视频一区 | 日韩av免费一区二区 | 一级片在线 | 色综合久久99 | 亚洲精品综合一区二区 | 999久久久久久 | 久久综合网色—综合色88 | 久久久久久久久久久高潮一区二区 | 一区二区日韩av | 日韩专区在线观看 | 国产精品久久久久久久久岛 | 日日夜精品 | 69国产盗摄一区二区三区五区 | 国产精品一区免费看8c0m | 亚洲蜜桃在线 | 视频1区2区 | 欧美精品国产综合久久 | 欧美成人h版 | 国产九色91| 国内精品视频在线 | av中文字幕网站 | 久久精品亚洲 | 欧美aaaxxxx做受视频 | 毛片美女网站 | 69精品在线观看 | 精品一区中文字幕 | 99热这里只有精品1 av中文字幕日韩 | 激情中文在线 | 国产美女网 | 天天天综合网 | 美女网站在线免费观看 | 成人免费观看网站 | 91插插插免费视频 | 亚洲精品国偷自产在线91正片 | 国产小视频在线 | 成人黄视频 | 亚洲在线看 | 日韩在线 一区二区 | 久久综合狠狠综合久久综合88 | 亚洲国产中文字幕在线视频综合 | www.99在线观看 | 99精品久久久久 | 丁香花在线观看视频在线 | 亚洲色综合 | 五月天久久久 | 欧美aⅴ在线观看 | av在线免费在线 | 丰满少妇高潮在线观看 | 色老板在线 | 久久精品美女视频网站 | 国产一区二区电影在线观看 | 亚洲 欧洲 国产 精品 | 国产精品xxxx18a99 | 久久国产色 | 91视频三区 | 麻豆国产在线播放 | 91新人在线观看 | 91视频首页 | 中文字幕免费观看 | 二区精品视频 | 国产美女精品人人做人人爽 | 精品一区二区三区久久久 | 在线观看视频在线观看 | a视频在线观看 | 超碰在线最新网址 | 777视频在线观看 | 亚洲视频www | 91pony九色丨交换 | 丁香六月婷 | 香蕉视频在线看 | 99精品视频免费在线观看 | 日韩激情在线 | 亚洲精品综合在线观看 | 韩国视频一区二区三区 | 色av男人的天堂免费在线 | 色欧美成人精品a∨在线观看 | 国产字幕av | 中文字幕免费观看全部电影 | 69av视频在线| 蜜臀久久99精品久久久无需会员 | 日韩黄色软件 | 久久久蜜桃 | 久亚洲| 91久久久久久国产精品 | 91精品视频观看 | 久久久久久久久亚洲精品 | 91成人午夜| 99久久精品国产系列 | 少妇高潮冒白浆 | 亚洲精品玖玖玖av在线看 | 日韩精品一区二区电影 | 久久婷婷国产 | 日日摸日日碰 | 日韩国产欧美在线播放 | 久久国产麻豆 | 精品福利在线视频 | 日韩v在线91成人自拍 | 国产精品毛片 | 四虎影视久久久 | 探花视频在线观看免费版 | 97在线免费视频观看 | 国产精品大片免费观看 | 在线免费观看涩涩 | 欧美美女视频在线观看 | 国产免费大片 | 免费在线观看成年人视频 | 人人精品久久 | 日韩大片在线 | 欧美国产亚洲精品久久久8v | 久草在线视频首页 | 97人人视频 | 日韩一区二区免费播放 | 麻豆系列在线观看 | 制服丝袜一区二区 | 六月色婷| 深爱五月激情网 | 精品久久久久久一区二区里番 | av电影免费在线播放 | 国产精品入口久久 | 国产在线观看免 | 久久精品99国产精品日本 | 国产精品自产拍在线观看蜜 | 精品uu| 911亚洲精品第一 | 国产原创在线视频 | 国产一级免费播放 | 日韩久久久 | 欧美成年性 | 日韩一级黄色av | 国产99久久久国产精品 | 国产专区视频在线观看 | 久久久国产精品视频 | 久久国色夜色精品国产 | 丁香五月亚洲综合在线 | 国产最新福利 | 天堂av网址 | 999视频在线播放 | 啪啪免费视频网站 | 色婷五月 | 五月天av在线 | 毛片在线网 | 国产精品久久久久久久久久了 | 免费网站看v片在线a | 色播五月激情综合网 | 久久另类小说 | 91影视成人| 在线观看国产 | 午夜精品福利一区二区 | 主播av在线 | 色综合五月 | 中文字幕日韩av | 婷婷播播网 | 91在线小视频 | 成人超碰97 | 超级碰碰碰免费视频 | 久热av在线 | 91亚色视频在线观看 | 国产精品久久久久国产精品日日 | 99精品视频一区 | 久久久黄色免费网站 | 大型av综合网站 | 99精品久久久久 | 日韩欧美视频免费在线观看 | 日韩在线观看视频一区二区三区 | 三级av网| 亚洲精品一区中文字幕乱码 | 中文字幕电影高清在线观看 | 男女精品久久 | 成人免费在线观看电影 | 摸阴视频 | 亚洲视频在线观看免费 | 91久久人澡人人添人人爽欧美 | 中文字幕久久精品 | 国产一区欧美二区 | 久久午夜视频 | 91最新在线观看 | 久久国产电影院 | 亚洲精品国产日韩 | 在线看91| 成人av片在线观看 | 国产中文字幕视频在线观看 | 亚洲自拍偷拍色图 | 亚洲三级毛片 | 亚洲日本三级 | 蜜桃麻豆www久久囤产精品 | 97免费在线视频 | 视频一区二区在线 | 在线视频麻豆 | 在线视频日韩欧美 | 国产成人专区 | 中文字幕资源网在线观看 | 91丨九色丨高潮 | 国产原创在线观看 | 亚洲无吗天堂 | 人人精品 | 日本公妇在线观看 | 亚洲精品国产日韩 | 亚洲国产精品成人va在线观看 | 成人免费视频视频在线观看 免费 | 久草视频免费播放 | 最新色视频 | 中文乱码视频在线观看 | 久久视频在线 | 国产免费视频在线 | av成人免费在线观看 | 成人91免费视频 | 久久高清国产 | 免费观看一级成人毛片 | 亚洲国产精品免费 | 四虎国产永久在线精品 | 中文字幕在线播放日韩 | 亚洲国产经典视频 | 18网站在线观看 | 久久久精品 一区二区三区 国产99视频在线观看 | 日韩在线观看精品 | 久久艹中文字幕 | 国产精品白浆视频 | 成人av电影在线观看 | 婷婷五月在线视频 | av丝袜在线 | 在线一二区 | 五月天六月婷 | 亚洲精品乱码久久久久久蜜桃不爽 | 成人h动漫在线看 | 99久久精品费精品 | 亚洲人成免费网站 | 91精品国产一区二区三区 | 最新国产精品拍自在线播放 | 中文字幕亚洲欧美日韩 | 国产精品毛片久久蜜 | 最新色站 | 久久免费观看视频 | 天天干天天操天天爱 | 国产精品理论片在线观看 | 国产资源网站 | 国产日本在线观看 | 日韩理论在线观看 | 在线观看理论 | 亚洲精品五月 | 国产午夜三级一区二区三 | 亚洲免费永久精品国产 | 国产精品理论片在线播放 | 国产欧美在线一区二区三区 | a视频免费看 | 天天爽夜夜爽精品视频婷婷 | 成年人免费观看国产 | 91麻豆精品国产91久久久无需广告 | 欧美va天堂va视频va在线 | 亚洲精品国产精品国自 | 日韩欧美精品在线 | 日韩com | 成人国产精品一区二区 | 亚洲成人av电影 | 日本激情中文字幕 | 中文在线最新版天堂 | 午夜骚影 | 欧美a级一区二区 | 欧美日韩性视频 | 久久视频 | 亚洲 中文 欧美 日韩vr 在线 | 国产精品青青 | 亚洲91av| 久久久久久久国产精品 | 亚洲成aⅴ人在线观看 | 久久好看免费视频 | 成人在线观看资源 | 97电影网手机版 | 在线免费看片 | www色com| 91精品久久久久久综合乱菊 | 九九热久久久 | 热久久免费视频精品 | 久久激情婷婷 | 中文字幕电影一区 | 久久乐九色婷婷综合色狠狠182 | 88av网站| 亚洲精品在线播放视频 | 天天操天天干天天摸 | 97精品电影院 | 亚洲精品美女在线观看播放 | 91免费版在线观看 | 亚洲资源视频 | 久久国产亚洲视频 | 色香蕉视频 | 国产99久久99热这里精品5 | 国产不卡在线观看视频 | 久久在线免费 | 久久久国产99久久国产一 | 女人18毛片90分钟 | www.婷婷com| 午夜精品福利一区二区三区蜜桃 | www免费视频com| 免费观看成年人视频 | 成人亚洲欧美 | 成人午夜电影久久影院 | 在线观看黄av | 99久久99久久精品 | 久久久国产精华液 | 久久免费看片 | 国产精品一区二区三区99 | 午夜精品一区二区三区视频免费看 | www色综合 | 国产精品99久久久久久大便 | 一级黄色片在线播放 | 国产精品综合在线观看 | 久久久影院官网 | 欧美一区中文字幕 | 国产精品视频内 | 欧美日韩一区二区三区视频 | 国产精品白丝jk白祙 | 国产在线一区二区三区播放 | 日本久久成人中文字幕电影 | 国产无套精品久久久久久 | 日本公妇在线观看 | 日韩免费电影网站 | 国色天香在线 | 欧美日韩3p | 国产黄色在线看 | av黄色亚洲 | 久久综合免费视频影院 | 国产第一页在线播放 | 免费福利在线观看 | 操一草| 91九色精品 | 国产丝袜网站 | 日韩欧美视频一区二区 | 国产精品美女久久久网av | 成人久久久久久久久久 | 成人毛片在线观看 | 在线免费高清视频 | 欧美性色xo影院 | av在线一级 | 免费观看性生活大片3 | 日韩大陆欧美高清视频区 | 天堂av色婷婷一区二区三区 | 国产九九精品视频 | 中文字幕免费久久 | 色五丁香| 国产精品18久久久久久久网站 | 久久伊人操 | 激情电影影院 | 久久精品—区二区三区 | 婷婷在线播放 | 国产一区二区三区免费视频 | 日本久久成人中文字幕电影 | 精品国产乱子伦一区二区 | www看片网站 | 精品女同一区二区三区在线观看 | 久久精品国产精品 | 狠狠的干 | 国产精品第一页在线 | 超碰在线1 | 日韩欧美高清 | 97av.com| 久久av伊人 | 免费网站色 | 在线国产一区 | 四虎国产精品免费观看视频优播 | 特级毛片在线 | 天天天干天天射天天天操 | 国产成人精品一区二区三区福利 | 亚洲国产精品影院 | 伊香蕉大综综综合久久啪 | 亚洲一区二区黄色 | 日日夜夜免费精品视频 | 久久九九免费 | 五月综合在线观看 | 久久五月婷婷综合 | 亚洲精品在线免费观看视频 | 国产网站色 | 91成人网在线观看 | 欧美日韩一级视频 | 激情黄色av | 在线观看av麻豆 | 久久极品 | 99热.com | 91精品久久久久久久99蜜桃 | 国产高清av免费在线观看 | 久久亚洲综合色 | 欧美精品一区二区三区一线天视频 | av一级在线观看 | 国产91欧美| 国产精品刺激对白麻豆99 | 麻豆91精品91久久久 | 国产精品理论片在线播放 | 中文一二区 | 99久久99久久精品 | 婷婷六月网 | 热久久国产| 国产成人精品三级 | 中文字幕在线观看视频一区二区三区 | 久久久毛片 | 免费又黄又爽的视频 | 国产精品久久久久久久久久不蜜月 | 成年人黄色av | 青青久草在线视频 | 亚洲激情免费 | 欧美日韩久久久 | 2023天天干 | 精品久久久久一区二区国产 | 黄色福利网| 久久久久久不卡 | 精品国产美女在线 | 亚洲精品欧洲精品 | 奇米影视777四色米奇影院 | 日日操日日操 | 天天干.com | 九九热视频在线播放 | 精精国产xxxx视频在线播放 | 国产999视频| 97电院网手机版 | 三日本三级少妇三级99 | 国产精品1区2区3区在线观看 | av丝袜在线| 2019精品手机国产品在线 | 最新av网址大全 | 一区二区三区久久精品 | 日本公妇在线观看高清 | 亚洲黄色av | 久久影院中文字幕 | 久久精品久久精品久久39 | 天天操福利视频 | 日韩伦理一区二区三区av在线 | 亚洲第一香蕉视频 | 国产成人香蕉 | 欧美日韩三级在线观看 | 在线观看欧美成人 | 日韩欧美亚洲 | 在线观看av免费观看 | 成人在线播放av | 中文字幕大全 | 青青河边草免费直播 | 超碰日韩在线 | 国产精品一区久久久久 | 日韩精品91偷拍在线观看 | 五月天堂网 | 在线天堂视频 | 国产一级二级av | 亚洲欧美日本一区二区三区 | 狠狠色伊人亚洲综合网站色 | 婷婷色六月天 | 成年人网站免费观看 | 4hu视频| 2020天天干夜夜爽 | 在线国产高清 | 激情欧美网 | 亚洲黄色免费 | 美女视频一区 | 中文字幕91 | 国产精品久久久久久久久久久免费看 | 一区二区三区免费在线观看视频 | 久久99热精品这里久久精品 | 国产系列 在线观看 | 国产美女永久免费 | 中文字幕在线播放日韩 | 久草在线免费看视频 | 婷婷精品进入 | 中文字幕在线观看1 | 久久久久国产一区二区三区四区 | 国产精品99久久久久人中文网介绍 | 中文久草 | 黄色在线免费观看网站 | 精品久久美女 | 亚洲精品ww| 91传媒在线观看 | 久操视频在线 | 最近高清中文字幕在线国语5 | 成人一区二区在线观看 | 怡红院av久久久久久久 | 99人成在线观看视频 | 国产黄色片一级三级 | 97色资源| 国产免费视频一区二区裸体 | 国产高清视频在线播放一区 | 国产免费一区二区三区最新6 | 成人久久视频 | 超碰公开在线 | 国产精品久久久久久69 | 日本久热 | 中文字幕一区二区三区视频 | 伊人网综合在线观看 | 天天干天天干天天 | 国产精品第一视频 | 色综合久久88色综合天天人守婷 | 国产精品免费久久久久久久久久中文 | 91看片一区二区三区 | 九九九热精品免费视频观看 | 精品国产大片 | av不卡免费看 | 亚洲精品黄 | 欧美日韩亚洲国产一区 | 日韩一二区在线 | 天天综合网久久综合网 | 999视频在线播放 | mm1313亚洲精品国产 | 在线久草视频 | 中文在线最新版天堂 | www黄色com | 人人澡超碰碰97碰碰碰软件 | 在线观看激情av | 日韩欧美一区二区三区免费观看 | 美女在线观看av | 日本在线成人 | 99爱国产精品| 日韩网站免费观看 | 深爱激情五月婷婷 | 久久精品人人做人人综合老师 | 久久免费视频一区 | 国产一二三区在线观看 | 精品国产一区二区三区av性色 | 美女性爽视频国产免费app | 亚洲japanese制服美女 | 欧美精品国产精品 | 韩日精品中文字幕 | 成人精品国产 | 香蕉视频导航 | 亚洲日本黄色 | 视频在线一区二区三区 | 亚洲视频免费在线看 | 欧美精品在线观看免费 | 亚洲天堂网站视频 | 午夜私人影院 | 黄色一级大片在线免费看产 | 久久久久久久网站 | 91在线国内视频 | 久久精品久久综合 | 正在播放 国产精品 | 亚洲综合视频在线 | 精品日韩视频 | 欧美a视频 | 最近在线中文字幕 | a视频在线看 | 日韩亚洲欧美中文字幕 | 91丨九色丨国产丨porny精品 | 成人毛片在线观看视频 | 中文综合在线 | 精品国产免费看 | 97超碰中文 | 欧美性免费 | 成人一级黄色片 | 美女久久精品 | 中文字幕一区二区三区久久蜜桃 | 一级特黄aaa大片在线观看 | 五月丁香 | 国产精品一区二区久久精品爱涩 | 免费看色网站 | 午夜精选视频 | 欧美在线一二 | 在线中文日韩 | 国产黄色大片免费看 | 粉嫩av一区二区三区四区 | 免费看黄色毛片 | 成人高清av在线 | 色av网站| 亚洲高清视频在线观看免费 | 欧美日韩国产精品一区二区亚洲 | 国产一级做a爱片久久毛片a | 亚洲成人av在线播放 | 色视频网址 | 精品国产美女在线 | 中文字幕中文中文字幕 | 男女免费av | 国产短视频在线播放 | 91av短视频 | 久久精品视频2 | 国产精品大尺度 | 日韩理论在线视频 | 亚洲h在线播放在线观看h | 婷婷九月激情 | 一区二区日韩av | 欧美孕妇与黑人孕交 | 日韩av影视在线观看 | 日韩av电影网站在线观看 | 色天天久久 | 99视频精品 | 九九热免费观看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 久久热亚洲 | 五月婷婷丁香六月 | 国产成人精品久久久 | 99精品视频在线观看视频 | 狠狠88综合久久久久综合网 | 国产精品久久久久久久久久久久 | www最近高清中文国语在线观看 | 久久精品5 | 丁香婷婷综合激情五月色 | 五月天婷婷在线视频 | 最新精品视频在线 | 韩日精品在线观看 | 一区二区影院 | 国语精品视频 | 国产亚洲精品久久久久久大师 | 亚洲韩国一区二区三区 | 中文亚洲欧美日韩 | 日韩欧美高清不卡 | www.日本色 | 久久综合久久综合这里只有精品 | 婷婷色在线播放 | av在线电影网站 |