0

我想动态设置每个代码的ScrollView的高度,因为我的 ScrollView 实际上比它应该高(底部的空白)。

我的想法是,我可以获得 ScrollView 中所有控件的高度,总结它们,然后我可以将该高度设置为我的 ScrollView。

我尝试的是以下代码:

protected override void OnStart()
{
    base.OnStart();
    SetScrollViewSize();
}

private void SetScrollViewSize()
{
    var root = FindViewById<ScrollView>(Resource.Id.root);
    if (root != null)
    {
        var controls = GetSelfAndChildrenRecursive(root); //Gives me all Controls in the root (The ScrollView)
        int heightOfAllControlsTogether = 0;
        foreach (ViewGroup control in controls)
        {
            heightOfAllControlsTogether += control.Height;
        }
        ViewGroup.LayoutParams parameters = new ViewGroup.LayoutParams(root.Width, heightOfAllControlsTogether);
        root.LayoutParameters = parameters;
    }
}

Heights 和 MeasuredHeights 始终为 0(零) - (我知道它需要先渲染,但那会是正确的位置吗?)我什至不确定我的方法是否可行。

任何帮助,将不胜感激!

4

2 回答 2

0

好吧,我发现了原因。

背景图形太高了。那是在底部创建空白空间。

于 2013-03-21T14:04:45.347 回答
0

这是一个基于子项总高度设置滚动视图高度的示例:

私人无效 setScrollViewHeightBasedOnChildren() {

int size = layoutRoot.getChildCount();
LinearLayout item = (LinearLayout) layoutRoot.getChildAt(0);
item.measure(0, 0);
int height = item.getMeasuredHeight();
//Reset size of ScrollView
scroll.setMinimumHeight(height / size);
scroll.invalidate();
}

查看详情:设置 ScrollView 的高度等于子项的总高度

于 2014-03-31T07:53:51.407 回答