Roberts has agreed to join the promoted side for the 2019/20 Premier League campaign from 1 July, after signing a two-year contract extension with Man City.
"We made it clear that we need players with quality and good character," head coach Daniel Farke told Norwich's official website.
"They both relate to Patrick. He is very skilful and down-to-earth, humble and modest ... he is a perfect fit for us.”
The winger spent the 2018/19 season on loan at Spanish club Girona, having previously been with Celtic for two-and-a-half years.
The 22-year-old has made three Premier League appearances, making his debut in 2013/14 for Fulham.
Roberts and Norwich will discover their first opponents of the new season when the fixtures are released at 09:00 BST Thursday 13 June.
Their only confirmed pre-season friendlyso far is against Paderborn on 16 July.