有趣的这一点。
所以我们有一个显示在 GoogleMap 上的“详细信息”视图,而对于平板电脑,这个活动被强制设置为像对话框一样的样式。
此详细信息视图中有一个 GoogleMap。
这在我们的 Nexus 10 中运行良好,但是 Galaxy Note 10 2 (4.0.1) 在这种方法上存在一些实际问题。
从图形上看,ActionBar 标题和 Home Icon 变得透明,而且 Details 视图中的 Map 也变暗了一些。
有没有人遇到过这种类型的问题?我似乎找不到任何东西。
谢谢
将活动变成“对话”代码
@SuppressLint("InlinedApi")
private static void makeActivityIntoDialog(Activity activity) {
//To show activity as dialog and dim the background, you need to declare android:theme="@style/PopupTheme" on for the chosen activity on the manifest
//This will only be called for tablets over v11 so we are ok to ignore this warning
activity.requestWindowFeature(Window.FEATURE_ACTION_BAR);
activity.setFinishOnTouchOutside(true);
activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
LayoutParams params = activity.getWindow().getAttributes();
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
if (dm.heightPixels < dm.widthPixels){
params.height = (4 * dm.heightPixels)/ 5 ; //relative height
params.width = (4 * dm.widthPixels)/ 7 ; //relative width
}else{
params.height = (3 * dm.heightPixels)/ 5 ; //relative height
params.width = (5 * dm.widthPixels)/ 7 ; //relative width
}
params.alpha = 1.0f;
params.dimAmount = 0.5f;
activity.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
}
我已经把它归结为导致操作栏图形错误的这些代码行。
mMapFragment = new SupportMapFragment();
if (mMapFragment.isAdded()){
getFragmentManager().beginTransaction().attach(mMapFragment);
}else{
getFragmentManager().beginTransaction().add(R.id.google_map_fragment_container, mMapFragment).commit();
}
基本上第二个我将谷歌地图片段添加到操作栏的视图中。