.class public Lcom/google/android/material/internal/FlowLayout; .super Landroid/view/ViewGroup; .source "FlowLayout.java" # annotations .annotation build Landroidx/annotation/RestrictTo; value = { .enum Landroidx/annotation/RestrictTo$Scope;->LIBRARY_GROUP:Landroidx/annotation/RestrictTo$Scope; } .end annotation # instance fields .field private itemSpacing:I .field private lineSpacing:I .field private rowCount:I .field private singleLine:Z # direct methods .method public constructor (Landroid/content/Context;)V .locals 1 .param p1 # Landroid/content/Context; .annotation build Landroidx/annotation/NonNull; .end annotation .end param const/4 v0, 0x0 .line 1 invoke-direct {p0, p1, v0}, Lcom/google/android/material/internal/FlowLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V return-void .end method .method public constructor (Landroid/content/Context;Landroid/util/AttributeSet;)V .locals 1 .param p1 # Landroid/content/Context; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroid/util/AttributeSet; .annotation build Landroidx/annotation/Nullable; .end annotation .end param const/4 v0, 0x0 .line 2 invoke-direct {p0, p1, p2, v0}, Lcom/google/android/material/internal/FlowLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V return-void .end method .method public constructor (Landroid/content/Context;Landroid/util/AttributeSet;I)V .locals 0 .param p1 # Landroid/content/Context; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroid/util/AttributeSet; .annotation build Landroidx/annotation/Nullable; .end annotation .end param .line 3 invoke-direct {p0, p1, p2, p3}, Landroid/view/ViewGroup;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V const/4 p3, 0x0 .line 4 iput-boolean p3, p0, Lcom/google/android/material/internal/FlowLayout;->singleLine:Z .line 5 invoke-direct {p0, p1, p2}, Lcom/google/android/material/internal/FlowLayout;->loadFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;)V return-void .end method .method public constructor (Landroid/content/Context;Landroid/util/AttributeSet;II)V .locals 0 .param p1 # Landroid/content/Context; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroid/util/AttributeSet; .annotation build Landroidx/annotation/Nullable; .end annotation .end param .annotation build Landroid/annotation/TargetApi; value = 0x15 .end annotation .line 6 invoke-direct {p0, p1, p2, p3, p4}, Landroid/view/ViewGroup;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V const/4 p3, 0x0 .line 7 iput-boolean p3, p0, Lcom/google/android/material/internal/FlowLayout;->singleLine:Z .line 8 invoke-direct {p0, p1, p2}, Lcom/google/android/material/internal/FlowLayout;->loadFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;)V return-void .end method .method private static getMeasuredDimension(III)I .locals 1 const/high16 v0, -0x80000000 if-eq p1, v0, :cond_1 const/high16 v0, 0x40000000 # 2.0f if-eq p1, v0, :cond_0 return p2 :cond_0 return p0 .line 1 :cond_1 invoke-static {p2, p0}, Ljava/lang/Math;->min(II)I move-result p0 return p0 .end method .method private loadFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;)V .locals 2 .param p1 # Landroid/content/Context; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Landroid/util/AttributeSet; .annotation build Landroidx/annotation/Nullable; .end annotation .end param .line 1 invoke-virtual {p1}, Landroid/content/Context;->getTheme()Landroid/content/res/Resources$Theme; move-result-object p1 sget-object v0, Lcom/google/android/material/R$styleable;->FlowLayout:[I const/4 v1, 0x0 invoke-virtual {p1, p2, v0, v1, v1}, Landroid/content/res/Resources$Theme;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray; move-result-object p1 .line 2 sget p2, Lcom/google/android/material/R$styleable;->FlowLayout_lineSpacing:I invoke-virtual {p1, p2, v1}, Landroid/content/res/TypedArray;->getDimensionPixelSize(II)I move-result p2 iput p2, p0, Lcom/google/android/material/internal/FlowLayout;->lineSpacing:I .line 3 sget p2, Lcom/google/android/material/R$styleable;->FlowLayout_itemSpacing:I invoke-virtual {p1, p2, v1}, Landroid/content/res/TypedArray;->getDimensionPixelSize(II)I move-result p2 iput p2, p0, Lcom/google/android/material/internal/FlowLayout;->itemSpacing:I .line 4 invoke-virtual {p1}, Landroid/content/res/TypedArray;->recycle()V return-void .end method # virtual methods .method public getItemSpacing()I .locals 1 .line 1 iget v0, p0, Lcom/google/android/material/internal/FlowLayout;->itemSpacing:I return v0 .end method .method public getLineSpacing()I .locals 1 .line 1 iget v0, p0, Lcom/google/android/material/internal/FlowLayout;->lineSpacing:I return v0 .end method .method public getRowCount()I .locals 1 .line 1 iget v0, p0, Lcom/google/android/material/internal/FlowLayout;->rowCount:I return v0 .end method .method public getRowIndex(Landroid/view/View;)I .locals 1 .param p1 # Landroid/view/View; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .line 1 sget v0, Lcom/google/android/material/R$id;->row_index_key:I invoke-virtual {p1, v0}, Landroid/view/View;->getTag(I)Ljava/lang/Object; move-result-object p1 .line 2 instance-of v0, p1, Ljava/lang/Integer; if-nez v0, :cond_0 const/4 p1, -0x1 return p1 .line 3 :cond_0 check-cast p1, Ljava/lang/Integer; invoke-virtual {p1}, Ljava/lang/Integer;->intValue()I move-result p1 return p1 .end method .method public isSingleLine()Z .locals 1 .line 1 iget-boolean v0, p0, Lcom/google/android/material/internal/FlowLayout;->singleLine:Z return v0 .end method .method public onLayout(ZIIII)V .locals 9 .line 1 invoke-virtual {p0}, Landroid/view/ViewGroup;->getChildCount()I move-result p1 const/4 p3, 0x0 if-nez p1, :cond_0 .line 2 iput p3, p0, Lcom/google/android/material/internal/FlowLayout;->rowCount:I return-void :cond_0 const/4 p1, 0x1 .line 3 iput p1, p0, Lcom/google/android/material/internal/FlowLayout;->rowCount:I .line 4 invoke-static {p0}, Landroidx/core/view/ViewCompat;->Z(Landroid/view/View;)I move-result p5 if-ne p5, p1, :cond_1 move p5, p1 goto :goto_0 :cond_1 move p5, p3 :goto_0 if-eqz p5, :cond_2 .line 5 invoke-virtual {p0}, Landroid/view/ViewGroup;->getPaddingRight()I move-result v0 goto :goto_1 :cond_2 invoke-virtual {p0}, Landroid/view/ViewGroup;->getPaddingLeft()I move-result v0 :goto_1 if-eqz p5, :cond_3 .line 6 invoke-virtual {p0}, Landroid/view/ViewGroup;->getPaddingLeft()I move-result v1 goto :goto_2 :cond_3 invoke-virtual {p0}, Landroid/view/ViewGroup;->getPaddingRight()I move-result v1 .line 7 :goto_2 invoke-virtual {p0}, Landroid/view/ViewGroup;->getPaddingTop()I move-result v2 sub-int/2addr p4, p2 sub-int/2addr p4, v1 move v1, p3 move v3, v0 move p2, v2 .line 8 :goto_3 invoke-virtual {p0}, Landroid/view/ViewGroup;->getChildCount()I move-result v4 if-ge v1, v4, :cond_8 .line 9 invoke-virtual {p0, v1}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View; move-result-object v4 .line 10 invoke-virtual {v4}, Landroid/view/View;->getVisibility()I move-result v5 const/16 v6, 0x8 if-ne v5, v6, :cond_4 .line 11 sget v5, Lcom/google/android/material/R$id;->row_index_key:I const/4 v6, -0x1 invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v6 invoke-virtual {v4, v5, v6}, Landroid/view/View;->setTag(ILjava/lang/Object;)V goto :goto_6 .line 12 :cond_4 invoke-virtual {v4}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; move-result-object v5 .line 13 instance-of v6, v5, Landroid/view/ViewGroup$MarginLayoutParams; if-eqz v6, :cond_5 .line 14 check-cast v5, Landroid/view/ViewGroup$MarginLayoutParams; .line 15 invoke-static {v5}, Ls1/m;->c(Landroid/view/ViewGroup$MarginLayoutParams;)I move-result v6 .line 16 invoke-static {v5}, Ls1/m;->b(Landroid/view/ViewGroup$MarginLayoutParams;)I move-result v5 goto :goto_4 :cond_5 move v5, p3 move v6, v5 :goto_4 add-int v7, v3, v6 .line 17 invoke-virtual {v4}, Landroid/view/View;->getMeasuredWidth()I move-result v8 add-int/2addr v8, v7 .line 18 iget-boolean v7, p0, Lcom/google/android/material/internal/FlowLayout;->singleLine:Z if-nez v7, :cond_6 if-le v8, p4, :cond_6 .line 19 iget p2, p0, Lcom/google/android/material/internal/FlowLayout;->lineSpacing:I add-int/2addr p2, v2 .line 20 iget v2, p0, Lcom/google/android/material/internal/FlowLayout;->rowCount:I add-int/2addr v2, p1 iput v2, p0, Lcom/google/android/material/internal/FlowLayout;->rowCount:I move v3, v0 .line 21 :cond_6 sget v2, Lcom/google/android/material/R$id;->row_index_key:I iget v7, p0, Lcom/google/android/material/internal/FlowLayout;->rowCount:I sub-int/2addr v7, p1 invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v7 invoke-virtual {v4, v2, v7}, Landroid/view/View;->setTag(ILjava/lang/Object;)V add-int v2, v3, v6 .line 22 invoke-virtual {v4}, Landroid/view/View;->getMeasuredWidth()I move-result v7 add-int/2addr v7, v2 .line 23 invoke-virtual {v4}, Landroid/view/View;->getMeasuredHeight()I move-result v8 add-int/2addr v8, p2 if-eqz p5, :cond_7 sub-int v2, p4, v7 sub-int v7, p4, v3 sub-int/2addr v7, v6 .line 24 invoke-virtual {v4, v2, p2, v7, v8}, Landroid/view/View;->layout(IIII)V goto :goto_5 .line 25 :cond_7 invoke-virtual {v4, v2, p2, v7, v8}, Landroid/view/View;->layout(IIII)V :goto_5 add-int/2addr v6, v5 .line 26 invoke-virtual {v4}, Landroid/view/View;->getMeasuredWidth()I move-result v2 add-int/2addr v2, v6 iget v4, p0, Lcom/google/android/material/internal/FlowLayout;->itemSpacing:I add-int/2addr v2, v4 add-int/2addr v3, v2 move v2, v8 :goto_6 add-int/lit8 v1, v1, 0x1 goto :goto_3 :cond_8 return-void .end method .method public onMeasure(II)V .locals 20 move-object/from16 v0, p0 .line 1 invoke-static/range {p1 .. p1}, Landroid/view/View$MeasureSpec;->getSize(I)I move-result v1 .line 2 invoke-static/range {p1 .. p1}, Landroid/view/View$MeasureSpec;->getMode(I)I move-result v2 .line 3 invoke-static/range {p2 .. p2}, Landroid/view/View$MeasureSpec;->getSize(I)I move-result v3 .line 4 invoke-static/range {p2 .. p2}, Landroid/view/View$MeasureSpec;->getMode(I)I move-result v4 const/high16 v5, -0x80000000 if-eq v2, v5, :cond_1 const/high16 v5, 0x40000000 # 2.0f if-ne v2, v5, :cond_0 goto :goto_0 :cond_0 const v5, 0x7fffffff goto :goto_1 :cond_1 :goto_0 move v5, v1 .line 5 :goto_1 invoke-virtual/range {p0 .. p0}, Landroid/view/ViewGroup;->getPaddingLeft()I move-result v6 .line 6 invoke-virtual/range {p0 .. p0}, Landroid/view/ViewGroup;->getPaddingTop()I move-result v7 .line 7 invoke-virtual/range {p0 .. p0}, Landroid/view/ViewGroup;->getPaddingRight()I move-result v8 sub-int/2addr v5, v8 move v9, v7 const/4 v10, 0x0 const/4 v11, 0x0 .line 8 :goto_2 invoke-virtual/range {p0 .. p0}, Landroid/view/ViewGroup;->getChildCount()I move-result v12 if-ge v10, v12, :cond_7 .line 9 invoke-virtual {v0, v10}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View; move-result-object v12 .line 10 invoke-virtual {v12}, Landroid/view/View;->getVisibility()I move-result v13 const/16 v14, 0x8 if-ne v13, v14, :cond_2 move/from16 v13, p1 move/from16 v14, p2 const/16 v16, 0x0 goto :goto_5 :cond_2 move/from16 v13, p1 move/from16 v14, p2 .line 11 invoke-virtual {v0, v12, v13, v14}, Landroid/view/ViewGroup;->measureChild(Landroid/view/View;II)V .line 12 invoke-virtual {v12}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; move-result-object v15 .line 13 instance-of v8, v15, Landroid/view/ViewGroup$MarginLayoutParams; if-eqz v8, :cond_3 .line 14 check-cast v15, Landroid/view/ViewGroup$MarginLayoutParams; .line 15 iget v8, v15, Landroid/view/ViewGroup$MarginLayoutParams;->leftMargin:I const/16 v16, 0x0 add-int/lit8 v8, v8, 0x0 .line 16 iget v15, v15, Landroid/view/ViewGroup$MarginLayoutParams;->rightMargin:I add-int/lit8 v15, v15, 0x0 goto :goto_3 :cond_3 const/16 v16, 0x0 move/from16 v8, v16 move v15, v8 :goto_3 add-int v17, v6, v8 .line 17 invoke-virtual {v12}, Landroid/view/View;->getMeasuredWidth()I move-result v18 move/from16 v19, v6 add-int v6, v18, v17 if-le v6, v5, :cond_4 .line 18 invoke-virtual/range {p0 .. p0}, Lcom/google/android/material/internal/FlowLayout;->isSingleLine()Z move-result v6 if-nez v6, :cond_4 .line 19 invoke-virtual/range {p0 .. p0}, Landroid/view/ViewGroup;->getPaddingLeft()I move-result v6 .line 20 iget v9, v0, Lcom/google/android/material/internal/FlowLayout;->lineSpacing:I add-int/2addr v9, v7 goto :goto_4 :cond_4 move/from16 v6, v19 :goto_4 add-int v7, v6, v8 .line 21 invoke-virtual {v12}, Landroid/view/View;->getMeasuredWidth()I move-result v17 add-int v7, v17, v7 .line 22 invoke-virtual {v12}, Landroid/view/View;->getMeasuredHeight()I move-result v17 add-int v17, v17, v9 if-le v7, v11, :cond_5 move v11, v7 :cond_5 add-int/2addr v8, v15 .line 23 invoke-virtual {v12}, Landroid/view/View;->getMeasuredWidth()I move-result v7 add-int/2addr v7, v8 iget v8, v0, Lcom/google/android/material/internal/FlowLayout;->itemSpacing:I add-int/2addr v7, v8 add-int/2addr v7, v6 .line 24 invoke-virtual/range {p0 .. p0}, Landroid/view/ViewGroup;->getChildCount()I move-result v6 add-int/lit8 v6, v6, -0x1 if-ne v10, v6, :cond_6 add-int/2addr v11, v15 :cond_6 move v6, v7 move/from16 v7, v17 :goto_5 add-int/lit8 v10, v10, 0x1 goto :goto_2 .line 25 :cond_7 invoke-virtual/range {p0 .. p0}, Landroid/view/ViewGroup;->getPaddingRight()I move-result v5 add-int/2addr v5, v11 .line 26 invoke-virtual/range {p0 .. p0}, Landroid/view/ViewGroup;->getPaddingBottom()I move-result v6 add-int/2addr v6, v7 .line 27 invoke-static {v1, v2, v5}, Lcom/google/android/material/internal/FlowLayout;->getMeasuredDimension(III)I move-result v1 .line 28 invoke-static {v3, v4, v6}, Lcom/google/android/material/internal/FlowLayout;->getMeasuredDimension(III)I move-result v2 .line 29 invoke-virtual {v0, v1, v2}, Landroid/view/ViewGroup;->setMeasuredDimension(II)V return-void .end method .method public setItemSpacing(I)V .locals 0 .line 1 iput p1, p0, Lcom/google/android/material/internal/FlowLayout;->itemSpacing:I return-void .end method .method public setLineSpacing(I)V .locals 0 .line 1 iput p1, p0, Lcom/google/android/material/internal/FlowLayout;->lineSpacing:I return-void .end method .method public setSingleLine(Z)V .locals 0 .line 1 iput-boolean p1, p0, Lcom/google/android/material/internal/FlowLayout;->singleLine:Z return-void .end method