android:flexbox没有包装内容

时间:2016-06-13 10:43:00

标签: android android-layout android-flexboxlayout

我正在使用此flexbox layout。我被困了一个行为。如果动态添加的项目不适合FlexboxLayout

,我希望项目显示到下一行

Flexbox Version: 0.2.2

enter image description here

以下是我的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 个答案:

答案 0 :(得分:1)

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

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

我希望这会有所帮助。