这只发生在Android 2.x上。如果在显示软键盘时滚动屏幕上放置GoogleMapFragment
,则其他部分小部件将覆盖黑色矩形。
这似乎与https://code.google.com/p/android/issues/detail?id=11676有关。据我所知,新版Google Google地图使用SurfaceView
进行绘制,但我们无法直接访问SurfaceView
。
P.S。实际上这是Android's EditText is hidden when the virtual keyboard is shown and a SurfaceView is involved的变体。我在此发布此内容以提高可见性,因为这是一个常见的Google Map V2问题。如果您认为这应该是社区问题,请告诉我或者只是更改它。
答案 0 :(得分:2)
您可以遍历视图层次结构并查找作为SurfaceView
实例的视图。这对我有用。
如果您打算使用以下代码,请在traverse()
结束时或在Google地图片段添加到您的活动时随时致电onCreate
。
void traverse() {
View root = findViewById(android.R.id.content);
traverse(root, 0);
}
void traverse(View v, int depth) {
if (v instanceof SurfaceView) {
SurfaceView sv = (SurfaceView) v;
sv.setBackgroundColor(Color.TRANSPARENT);
}
if (v instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) v;
for (int i = 0, len = vg.getChildCount(); i < len; i++) {
traverse(vg.getChildAt(i), depth+1);
}
}
}