在扩展relativelayout的自定义布局中,重写onlayout方法的正确方法是什么?
我试着把所有的视图都放在一张桌子上。我们的想法是用imageviews填充一行,直到它被填满,然后在新行中继续。

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);

        int idOfViewToTheLeft = 1;

        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(getContext(),);

        ImageView bookmark;
        for(int counter = 1; counter < getChildCount(); counter++) {
            bookmark = (ImageView) findViewById(counter);
            if(counter > 1) {
               if(this.getWidth() > (bookmark.getLeft() + bookmark.getWidth())) {
                   params.addRule(RelativeLayout.RIGHT_OF, bookmark.getId() - 1);
               } else {
                   params.addRule(RelativeLayout.BELOW, idOfViewToTheLeft);
                   idOfViewToTheLeft = bookmark.getId();
               }
            }

            bookmark.setScaleType(ScaleType.CENTER_CROP);
        }
    }
    }

最佳答案

我解释了如何在this演示文稿中编写自定义布局(特别是flowlayout,这是您希望完成的任务)
Video available here

07-24 09:48
查看更多