This nearly killed me. I was considering just dropping support for Android 2.x! Thankfully I've found a solution. Just add the following to your CSS:
html {
min-width:100%;
min-height:100%;
}
The problem seems to be that, unlike on desktop browsers and Android 4+, the visible size of the HTML 'element' defaults to 0x0 instead of 100%x100%. Because my content divs have position:fixed;
they don't cause the html or body elements to expand to fit them. That's my theory anyway.
Hope that helps someone!