Chasing a target of 274 at the Pallekele International Cricket Stadium, England were comfortably placed at 132 for two after 27 overs when rain forced the players off.
No further play was possible in the penultimate match of the series and England were 18 runs ahead at that stage under the scoring method governing such rain-shortened fixtures.
England’s test captain Joe Root was unbeaten on 32 at the crease with his ODI counterpart Eoin Morgan 31 not out, the duo adding a crucial 56 for the unbroken third-wicket partnership to keep their team ahead of the run rate.
Sri Lanka had a chance to break the stand when Root was caught at short fine leg off spinner Dhananjaya de Silva but the delivery was called illegal by the umpire as the hosts had more fielders outside the 30-yard circle than permitted.
Sri Lanka spinner Akila Dananjaya dismissed opener Jason Roy for an attacking 45 off 49 deliveries and Alex Hales for 12 but the hosts made no further inroads.
Earlier, half-centuries from opener Niroshan Dickwella and middle-order batsman Dasun Shanaka and some useful contributions from the lower order helped Sri Lanka to 273-7 after being put in to bat.
Dickwella hit a 70-ball 52 and with captain Dinesh Chandimal laid the foundation for Sri Lanka’s innings with a second-wicket partnership of 70 runs.
But the hosts slipped against the off-spin of Moeen Ali and leg spinner Adil Rashid, losing three wickets for 13 runs to be reduced to 102-4.
Shanaka then launched Sri Lanka’s counter-attack, taking the aerial route to hit the spinners for sixes and fours. He added 52 for the fifth wicket with Dhananjaya de Silva to start Sri Lanka’s recovery.
The 27-year-old hit five sixes and four boundaries in his run-a-ball innings before getting run out.
All-rounder Thisara Perera made 44 off 41 balls as he and Shanaka added 58 for the sixth wicket. He then shared 56 runs with Akila Dananjaya who made 32 not out off 26 balls.
The fifth and final one-dayer will be played in Colombo on Tuesday.