Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用android中的flexboxlayoutmaanger创建instagram explore这样的布局?_Android_Android Layout_Android Recyclerview_Gridlayoutmanager - Fatal编程技术网

如何使用android中的flexboxlayoutmaanger创建instagram explore这样的布局?

如何使用android中的flexboxlayoutmaanger创建instagram explore这样的布局?,android,android-layout,android-recyclerview,gridlayoutmanager,Android,Android Layout,Android Recyclerview,Gridlayoutmanager,我正在尝试创建一个显示instagram标签等图像的recyclerview。我已经检查了这个问题,但它似乎不起作用。我尝试使用gridlayoutmanager,但无法使其工作。如何使用google的FlexboxLayoutManager或自定义布局管理器重新创建它?希望你能回答。尊敬。您可以使用Nick Butcher作为回收视图的布局管理器 在这里,我使用它来创建下面的示例布局 这对我很有效 注:我在这里使用kotlin:)。根据上述答案使用。 要显示类似instagram的网格,请使

我正在尝试创建一个显示instagram标签等图像的recyclerview。我已经检查了这个问题,但它似乎不起作用。我尝试使用gridlayoutmanager,但无法使其工作。如何使用google的FlexboxLayoutManager或自定义布局管理器重新创建它?希望你能回答。尊敬。

您可以使用Nick Butcher作为
回收视图的布局管理器

在这里,我使用它来创建下面的示例布局

这对我很有效


注:我在这里使用kotlin:)。

根据上述答案使用。 要显示类似instagram的网格,请使用以下代码

var spannedGridLayoutManager = SpannedGridLayoutManager(
        orientation = SpannedGridLayoutManager.Orientation.VERTICAL,
        spans = 3
    )
spannedGridLayoutManager.itemOrderIsStable = true
spannedGridLayoutManager.spanSizeLookup =
        SpannedGridLayoutManager.SpanSizeLookup { position ->

            var x = 0
            if (position % 9 == 0) {
                x = position / 9
            }
            when {
                position == 1 || x % 2 == 1 || (position - 1) % 18 == 0 ->
                    SpanSize(2, 2)
                else ->
                    SpanSize(1, 1)
            }

        }
    recyclerView.layoutManager = spannedGridLayoutManager
    recyclerview.adapter = searchGridAdapter
    

是的,我用过,但里面有很多错误。例如,当只有一个项目时,它不会显示。当我在清除并添加新项目后调用notifydatasetchanged时,它会抛出arrayoutofbounds异常。“我会检查一下,如果有用的话会告诉你。我找不到如何使用第一个库来实现它,我认为使用第二个库是不可能的。”WebDiva Priyanka的第二个答案帮助我在2020年3月创建了这个库。所以它对我有效!是的,我试过上面回答中提到的这个。尝试将recyclerview中的项目数设置为1,或使用notifydatasetchanged重新加载recyclerview。它在前一种情况下没有出现,在后一种情况下崩溃。
var spannedGridLayoutManager = SpannedGridLayoutManager(
        orientation = SpannedGridLayoutManager.Orientation.VERTICAL,
        spans = 3
    )
spannedGridLayoutManager.itemOrderIsStable = true
spannedGridLayoutManager.spanSizeLookup =
        SpannedGridLayoutManager.SpanSizeLookup { position ->

            var x = 0
            if (position % 9 == 0) {
                x = position / 9
            }
            when {
                position == 1 || x % 2 == 1 || (position - 1) % 18 == 0 ->
                    SpanSize(2, 2)
                else ->
                    SpanSize(1, 1)
            }

        }
    recyclerView.layoutManager = spannedGridLayoutManager
    recyclerview.adapter = searchGridAdapter