Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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
Java 回收器视图GridLayoutManager-每行的权重_Java_Android_Android Layout_Android Recyclerview - Fatal编程技术网

Java 回收器视图GridLayoutManager-每行的权重

Java 回收器视图GridLayoutManager-每行的权重,java,android,android-layout,android-recyclerview,Java,Android,Android Layout,Android Recyclerview,我正在尝试使用GridLayoutManager实现一个RecyclerView,它完成以下行为: ------------- | | | | ------------- | | | | | | ------------- | | | | | | ------------- | | | | | | ------

我正在尝试使用GridLayoutManager实现一个RecyclerView,它完成以下行为:

  -------------
  |           |
  |           |
  -------------
  |       |   |
  |       |   |
  -------------
  |   |       |
  |   |       |
  -------------
  |       |   |
  |       |   |
  -------------
  |   |       |
  |   |       |
  -------------
其思想是,第一个项目始终占据整行,然后将下一行划分为3个空间,2个项目,其中一个项目的权重为2,另一个项目的权重为1(类似于线性布局)


如何实现这种行为?

正如塞尔文所建议的那样,我找到了custom LayoutManager,发现覆盖getSpanSize()方法对我来说是可行的

layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            Category item = mCategories.get(position);
            return item.weight;
        }
    });

正如Selvin所建议的那样,我找到了CustomLayoutManager,发现重写getSpanSize()方法对我来说是可行的

layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            Category item = mCategories.get(position);
            return item.weight;
        }
    });

通过实现own
RecyclerView.LayoutManager
通过实现own
RecyclerView.LayoutManager
但这只会更改项目占用的跨距数。它不会改变跨度重量本身。例如,如果总跨距计数为4,此方法返回3,则该项将占行的75%,但跨距仍然相等。有没有办法改变跨度本身的重量?即跨距计数为2,但跨距权重不同?但这只会更改项目占用的跨距数。它不会改变跨度重量本身。例如,如果总跨距计数为4,此方法返回3,则该项将占行的75%,但跨距仍然相等。有没有办法改变跨度本身的重量?即跨度计数为2,但跨度重量不同?