对话框中的Android Google Maps v2 Map Fragment样式活动ActionBar图形错误 - Samsung Tab 10 2

时间:2013-10-08 16:16:02

标签: android google-maps android-fragments dialog

有趣的一个。

因此,我们在Google地图上显示了一个“详细信息”视图,对于平板电脑,此活动被强制设置为对话框。

此详细信息视图中包含Google地图。

这在我们的Nexus 10中运行良好,但是Galaxy Note 10 2(4.0.1)在使用这种方法时遇到了一些实际问题。

图形化地将ActionBar标题和主页图标变为透明,并且“详细信息”视图中的“地图”在某种程度上变暗。

之前有没有人遇到过这类问题?我似乎无法找到任何相关内容。

由于

将活动设为“对话框”代码

    @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();


             }

基本上第二个我将GoogleMap片段添加到视图中,操作栏会出现问题。

1 个答案:

答案 0 :(得分:0)

答案是将地图放在透明的框架布局中 - 不知道为什么,但它现在没有从标题栏中删除那个奇怪的透明方块。

static public class WorkaroundMapFragment extends SupportMapFragment {

        public WorkaroundMapFragment() {
            super();
        }

        @Override
        public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle savedInstance) {
            View layout = super.onCreateView(layoutInflater, viewGroup, savedInstance);

            layout.requestFocus();
            FrameLayout frameLayout = new FrameLayout(getActivity());
            frameLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent));
            ((ViewGroup) layout).addView(frameLayout,
                    new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
            return layout;
        }
    } 
}