添加子项后展开 ViewGroup

Expand ViewGroup after adding children

提问人:Bitlejuce Do 提问时间:11/9/2023 最后编辑:Bitlejuce Do 更新时间:11/9/2023 访问量:16

问:

我正在尝试以编程方式向 LinearLayout 添加子项,但 LinearLayout 的扩展幅度不超过屏幕大小。但是,如果我对高度进行硬编码 - 那么它的创建量大于屏幕尺寸。但是我想使用WRAP_CONTENT身高,要计算的身高取决于子身高的总和。这可能吗? 下面是一个示例:

           LinearLayout outerContainer = new LinearLayout(this);

        outerContainer.setOrientation(LinearLayout.VERTICAL);
        outerContainer.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));

        LinearLayout mViewHolder = new LinearLayout(this);
        mViewHolder.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        mViewHolder.setOrientation(LinearLayout.VERTICAL);
        mViewHolder.setId(R.string.rootHeadlineContainer);

        for (int i=0; i< 28; i++){
            TextView header = new TextView(this);
            header.setLayoutParams(new ViewGroup.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            header.setBackgroundColor(Color.GRAY);
            header.setTextSize(36f);
            header.setText("  Header");
            outerContainer.addView(header);
        }

        outerContainer.addView(mViewHolder);
        outerContainer.requestLayout();
        //end test

        LinearLayout rootHolder = new LinearLayout(this);

        rootHolder.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); //todo 
        rootHolder.addView(outerContainer);
        rootHolder.setY(pos);
        scrollView.addView(rootHolder);
        rootHolder.requestLayout();

例如,我可以设置:

rootHolder.setLayoutParams(new ViewGroup.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, 10000));

然后它扩展到 10000 高度,并为所有孩子提供足够的空间。但是如果我使用 WRAP_CONTENT那么我会得到带有屏幕高度的 rootHolder,它会夹住孩子enter image description here

Android 视图 android-linearlayout

评论


答: 暂无答案