2016-06-13 6 views
2

Ich verwende diese flexbox layout. Ich bin dabei, ein Verhalten zu bekommen. Ich möchte, dass Elemente in der nächsten Zeile angezeigt werden, wenn dynamisch hinzugefügte Elemente nicht in FlexboxLayout passen.android: flexbox nicht umhüllen Inhalt

Flexbox Version: 0.2.2

enter image description here

Unten ist mein XML-Code:

<com.google.android.flexbox.FlexboxLayout 
    android:id="@+id/fbl_choose_category_upload" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="@dimen/margin_16" 
    android:paddingLeft="@dimen/padding_16" 
    android:paddingRight="@dimen/padding_16" 
    app:alignContent="space_between" 
    app:alignItems="flex_start" 
    app:flexDirection="row" 
    app:flexWrap="wrap" 
    app:justifyContent="space_between"> 

</com.google.android.flexbox.FlexboxLayout> 

Mein Java-Code:

private void generateCategories(UserCategoryListResponse userCategoryListResponse) { 
    for (UserCategoryListResponse.Datum data : userCategoryListResponse.getData()) { 
     mFlexboxLayout.addView(getCategoryRadioButton(data)); 
    } 
} 

private RadioButton getCategoryRadioButton(UserCategoryListResponse.Datum data) { 

    RadioButton radioButton = new RadioButton(this); 
    radioButton.setId(Integer.parseInt(data.getCategoryId())); 
    radioButton.setBackgroundResource(R.drawable.selector_choose_category); 
    radioButton.setButtonDrawable(null); 
    radioButton.setPadding(DisplayUtils.pxToDp(this, 16), DisplayUtils.pxToDp(this, 16), DisplayUtils.pxToDp(this, 16), DisplayUtils.pxToDp(this, 16)); 
    radioButton.setText(data.getCategoryName()); 
    radioButton.setTypeface(radioButton.getTypeface(), Typeface.BOLD); 
    radioButton.setEnabled(data.getIsFree().equals("1")); 
    radioButton.setOnCheckedChangeListener(this); 
    return radioButton; 
} 

Aber eigentlich das, was passiert ist, Flexbox den Inhalt schrumpft. Das erwartete Ergebnis war, dass, wenn nur drei Kategorien nur als erstes eingefügt werden könnten, die nächsten Elemente in der nächsten Zeile erscheinen sollten.

Wenn mir jemand dabei helfen kann.

Antwort

1

Ich habe nicht das Flexbox-Layout versucht, aber ich habe das gleiche Problem in der Vergangenheit gelöst und mein Ansatz war so.

Zum Zeitpunkt des Hinzufügens der neuen dynamischen Ansicht habe ich die Größe der übergeordneten Ansichtsgruppe mit der Bildschirmgröße überprüft. Wenn die Größe der Ansichtsgruppe erhöht wird, fügte ich die neue Zeile mit der neuen Ansichtsgruppe hinzu und fügt diese neu hinzu erstellt Viewgroup oder sonst nur die Ansicht in der gleichen Zeile.

Ich hoffe, das wird helfen.

+0

Ja, das könnte meine alternative Lösung sein. –

Verwandte Themen