【问题标题】:Set ScollView Size (Height) in Code (Sum of All Controls Heights)在代码中设置 ScrollView 大小(高度)(所有控件高度之和)
【发布时间】:2013-03-02 22:04:30
【问题描述】:

我想为每个代码动态设置 ScrollViewHeight,因为我的 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(零) - (我知道它需要先渲染,但什么是正确的位置呢?)我什至不确定我的方法是否可行。

任何帮助将不胜感激!

【问题讨论】:

  • 您到底是如何获得底部空间的(出于好奇,您是否对某些孩子使用布局重力)?在纯 java sdk 中,您可以在 onCreate 方法中的一个视图上发布 Runnable,或者使用类似 scrollView.getViewTreeObserver().addGlobalLayoutListener() {/*calculate here*/} 的内容。但我不知道单声道是如何工作的。
  • 这个空间是因为我在我的 ScrollView 中使用了几个 ListViews。众所周知,不建议在 ScrollView 中使用 ListViews,但我确实需要它。我在这里使用此代码:stackoverflow.com/a/3495908/880472 它工作正常,但它在底部给了我奇怪的空间,这是我现在要解决的问题。
  • 该问题的公认答案来自一位 Android SDK 工程师,他说您不应该这样做。无论如何,请检查该全局布局的单声道(我不使用单声道)。如果存在,则附加到视图,并且您应该具有正确的视图尺寸。

标签: android height xamarin.android scrollview


【解决方案1】:

嗯,我找到了原因。

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

【讨论】:

    【解决方案2】:

    这是一个根据孩子的总高度设置滚动视图高度的示例:

    私人无效 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();
    }
    

    查看详情:Set the height of ScrollView equal total height of children

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2018-11-08
      • 1970-01-01
      • 2014-06-20
      相关资源
      最近更新 更多