Better scrolling management when the component gets focus

- Make sure the component will not be covered by keyboards. 
- Each of individual component might have different distance from the keyboard.
- Measurement taken is now relative to the keyboard, rather than some arbitrary numbers `topPadding`.