Android: Flexbox не упаковка контента

Я использую этот макет flexbox. Я застрял, получая поведение. Я хочу, чтобы элементы отображались на следующей строке, если динамически добавленные элементы не помещаются в FlexboxLayout,

Flexbox Version: 0.2.2

Ниже мой XML-код:

<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>

Мой код Java:

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;
}

Но на самом деле происходит то, что flexbox сокращает содержимое. Ожидаемый результат состоял в том, что, скажем, если в первую очередь можно было бы указать только три категории, то следующие пункты должны появиться в следующей строке.

Если кто-нибудь может помочь мне с этим.

1 ответ

Я не пробовал макет flexbox, но в прошлом я решал ту же проблему, и мой подход был таким.

Во время добавления нового динамического представления я проверял размер его родительской группы просмотра по размеру экрана, и если размер группы просмотра увеличивается, то я добавлял новую строку с новой группой просмотра и добавлял это представление в эту вновь созданную группу просмотра или еще просто добавлял вид в той же строке.

Я надеюсь, это поможет.

Другие вопросы по тегам