This should be very straightforward. Here is a simple example of how to accomplish this.

Here is the scene hierarchy, with the Content game object as a child of the Viewport, which in turn is a child of the Scrollbar gameobject. This is default Unity set up for a ScrollView game object.

[![Scene Hierarchy][1]][1]

The only other thing I've added is a Controller game object, to hold our sample scroll view populator script.

The Content game object needs two components: **Vertical Layout Group** and **Content Size Fitter**. I've added a bit of spacing to separate the items. **Child Force Expand *Height*** should be unchecked.

[![enter image description here][2]][2]

Create the item prefab(s) as children of the Content game object. For the demo, the item is very simple, just a background image with a text label child:

[![temp hierachy with prefab under construction][3]][3]

Here's the scene so far, with the item prefab in place:

[![demo scene under construction][4]][4]

When that is fettled to your satisfaction, save the prefab and remove it.

Here is an example script that will populate the ScrollView without the items overlapping:

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class PopulateScrollView : MonoBehaviour
{
    [SerializeField] private Transform m_ContentContainer;
    [SerializeField] private GameObject m_ItemPrefab;
    [SerializeField] private int m_ItemsToGenerate;

    void Start()
    {
        for(int i = 0; i < m_ItemsToGenerate; i++)
        {
            var item_go = Instantiate(m_ItemPrefab);
            // do something with the instantiated item -- for instance
            item_go.GetComponentInChildren<Text>().text = "Item #" + i;
            item_go.GetComponent<Image>().color = i % 2 == 0 ? Color.yellow : Color.cyan;
            //parent the item to the content container
            item_go.transform.SetParent(m_ContentContainer);
            //reset the item's scale -- this can get munged with UI prefabs
            item_go.transform.localScale = Vector2.one;
        }
    }
}
```

Here are the exposed settings for this component, which was added to the Controller game object:

[![enter image description here][5]][5]

And here is the result when played:

[![Demo][6]][6]


  [1]: https://i.sstatic.net/0QlWT.png
  [2]: https://i.sstatic.net/VxtOa.png
  [3]: https://i.sstatic.net/3ZzeV.png
  [4]: https://i.sstatic.net/6X381.png
  [5]: https://i.sstatic.net/fXOEa.png
  [6]: https://i.sstatic.net/LhqoL.png