我要获取的是地图快照,但来自用户不可见的布局,因此我只能向用户显示快照,而不是实际的创建过程。如果我尝试从可见性设置为不可见的布局中获取它,我会收到此错误:
**java.lang.IllegalArgumentException: width and height must be > 0
at android.graphics.Bitmap.createBitmap(Bitmap.java:695)**
布局xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map_holder"
android:orientation="vertical"
android:layout_width="200dp"
android:layout_height="200dp"
android:visibility="invisible">
<fragment
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
map:uiRotateGestures="false"
class="com.vodafone.glympseplugin.maps.Map" />
这是 onCreate() 中的代码:
Bitmap mapBitmap = Bitmap.createBitmap(200,200,Bitmap.Config.ARGB_8888);
SupportMapFragment mapfragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
GoogleMap map = mapfragment.getMap();
map.snapshot(this, mapBitmap);
显然,问题在于地图片段尚未膨胀和测量。如何解决这个问题,从不可见的地图创建位图?
我还尝试在片段的父 ViewGroup 上调用 layout(...) 和 measure(...) 但结果是相同的。