0

面白いのはこれ。

そのため、GoogleMap の上に表示される「詳細」ビューがあり、タブレットの場合、このアクティビティはダイアログのようにスタイル設定する必要があります。

この詳細ビューには GoogleMap が含まれています。

これは 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();


             }

基本的に、2 番目に GoogleMap Fragment をビューに追加すると、アクション バーにバグが発生します。

4

1 に答える 1

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;
        }
    } 
}
于 2013-10-09T13:25:08.030 に答える