提问人:Bitlejuce Do 提问时间:11/9/2023 最后编辑:Bitlejuce Do 更新时间:11/9/2023 访问量:16
添加子项后展开 ViewGroup
Expand ViewGroup after adding children
问:
我正在尝试以编程方式向 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,它会夹住孩子
答: 暂无答案
评论