3

我正在使用这个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 缩小了内容。可以说,预期的结果是,如果只能首先安装三个类别,那么下一行应该出现下一个项目。

如果有人可以帮助我解决这个问题。

4

1 回答 1

1

我没有尝试过 flexbox 布局,但我过去解决了同样的问题,我的方法是这样的。

在添加新的动态视图时,我正在检查其父视图组的大小和屏幕大小,如果视图组大小增加,那么我正在使用新视图组添加新行并将该视图添加到新创建的视图组中,否则只是在同一行中添加视图。

我希望这将有所帮助。

于 2016-06-13T11:45:18.793 回答