3

私のアプリケーションには、jfeinstein10によって開発されたスライド メニューがあります。私のアプリケーションでは問題なく動作しています;)

MapView のホストである Fragment があります。このフラグメントは、Fragment クラスから拡張された他のフラグメントと同様です。このフラグメントでは、スライド メニューを開くと、メニュー コンテンツの上に黒いカバー/レイヤーがあります。他のフラグメントでメニューを開くと、黒いカバーがありません。また、私が見つけたのは、ボックスの高さがフラグメントとまったく同じ高さであることです。

以前にこの問題を見たことがありますか? コメントや提案をいただければ幸いです。

ここに画像の説明を入力

=> 更新

セレイが提案したことに基づいて、背景を透明に設定しました。ただし、割り当てている色(透明または他の色)に関係なく、まだ表示され、黒です:(これは私のコードです:

<?xml version="1.0" encoding="utf-8"?>

<com.google.android.gms.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:id="@+id/mapView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    map:uiCompass="true"
    android:background="#00000000"/> 
4

4 に答える 4

2

map:zOrderOnTop="true"解決策はXMLに追加することでした。

詳細については、このリンクを参照してください。

于 2013-04-24T03:50:54.370 に答える
2

ここですべての方法を試しましたが、どれもうまくいきませんでした。GoogleOptions を使用して zOrder を一番上に移動すると、基本的なズーム コントロールが地図の後ろに隠れてしまいます。
このリンクの最後の提案: https://github.com/jfeinstein10/SlidingMenu/issues/168#issuecomment-17065660 (ckakei) で修正されました。
秘訣は、空の透明なビューをレイアウトに追加することです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

<FrameLayout
    android:id="@+id/view_map"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
</FrameLayout>
<View
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent" />

このビューをフラグメントで膨らませています。view_map FrameLayout を SuppportMapFragment に置き換えます。

これはそのクラスの重要な部分です:

private GoogleMap googleMap;
private SupportMapFragment mapFragment;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    return inflater.inflate(R.layout.view_map_layout, container,
            false);

}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    FragmentManager fm = getChildFragmentManager();
    if (mapFragment == null) {
        mapFragment = SupportMapFragment.newInstance();
    }
    if (savedInstanceState == null) {
        mapFragment.setRetainInstance(true);
    } else {
        googleMap = mapFragment.getMap();
    }
    fm.beginTransaction().replace(R.id.view_map, mapFragment).commit();
}
于 2013-05-23T08:59:23.570 に答える
0

スライド メニューの開閉時にマップをコピーするマップ コピー ビューを作成しました。

@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
private void showMapCopy(boolean show) {

    View map = findViewById(R.id.map);
    View mapCopy = findViewById(R.id.map_copy);

    if (show) {
        map.setDrawingCacheEnabled(true);
        Bitmap bitmap = map.getDrawingCache();
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN)
            mapCopy.setBackgroundDrawable(new BitmapDrawable(getResources(), bitmap));
        else
            mapCopy.setBackground(new BitmapDrawable(getResources(), bitmap));
        mapCopy.setVisibility(View.VISIBLE);
    } else {
        map.setDrawingCacheEnabled(false);
        mapCopy.setVisibility(View.GONE);
    }
}

スライディング メニュー リスナーを開く

    mMenu.setOnClosedListener(new OnClosedListener() {
        @Override
        public void onClosed() {
            showMapCopy(false);
        }
    });

OnOptionItemSelected

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.abs__home:
        case android.R.id.home:
                showMapCopy(true);
                mMenu.toggle();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
于 2013-05-09T05:49:02.867 に答える
0

MapView の背景を透明に設定します - android:background="#00000000"

于 2013-04-23T16:21:57.113 に答える