1

Google Nexus One古いものと新しいものを混ぜるのに問題がありSupportMapFragmentます。

特定のランドスケープビューでは、実際に情報を表示するためにスクロールする必要がある方法でHorizontalScrollView地図いくつかの情報があります。

SupportMapFragment問題は、実際にビュー全体をスクロールしているときに、スクロールすると(デフォルトでは黒のように見える)背景が表示されることです(今は理解できません)。

私が何を意味するかを示すための写真。

行動デモ

同じ正確な問題ではありませんが、gmaps-api-issuesに同様の報告されたバグがあります


だから、私がこれまでにテストしたこと:

  • @color/transparentでも、XMLおよび/またはプログラムで、背景をに設定します。
  • SupportMapFragmentz順序の変更

マップを呼び出す前にこのコードを設定します。

GoogleMapOptions op = new GoogleMapOptions();
op.zOrderOnTop(true);
SupportMapFragment.newInstance(op);

だから私はアイデアを使い果たしました。私は同じ正確なコードを次の場所で正常にテストしました:

  • Galaxy Nexus
  • HTC Desire HD
  • Samsung Galaxy S3
  • Samsung Galaxy Mini
  • Galaxy Ace

編集:興味深いのは、スクリーンショットを撮ると、特定のケースをキャプチャすることが不可能であることに気づきました。スクリーンショットを撮ったとき、エラーはポートレートとランドスケープに再度変更することによってのみ再現できました。

何か案は?明らかなことを見逃しましたか?

コメントありがとうございます。

4

2 に答える 2

4

私は非常によく似た問題を抱えていましたが、 SlidingMenuライブラリを追加していて、このコメントのハックを使用して修正しました

public class MyMapFragment extends SupportMapFragment() {

   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
       View view = super.onCreateView(inflater, container, savedInstanceState);
       setMapTransparent((ViewGroup) view);
       return view;
   };

   private void setMapTransparent(ViewGroup group) {
       int childCount = group.getChildCount();
       for (int i = 0; i < childCount; i++) {
       View child = group.getChildAt(i);
       if (child instanceof ViewGroup) {
           setMapTransparent((ViewGroup) child);
       } else if (child instanceof SurfaceView) {
           child.setBackgroundColor(0x00000000);
       }
   }
 }
于 2013-01-23T18:59:33.283 に答える
0

Robert Estivillの答えに追加するだけです。問題がないため、4.1以上のデバイスでコードを実行しないことをお勧めします。

わずかに変更されたバージョン:

public class FixMapFragment extends SupportMapFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = super.onCreateView(inflater, container, savedInstanceState);

        // Fix for black background on devices < 4.1
        if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN){
            setMapTransparent((ViewGroup) view);
        } 
        return view;
    }

    private void setMapTransparent(ViewGroup group) {
        int childCount = group.getChildCount();
        for (int i = 0; i < childCount; i++) {
            View child = group.getChildAt(i);
            if (child instanceof ViewGroup) {
                setMapTransparent((ViewGroup) child);
            } else if (child instanceof SurfaceView) {
                child.setBackgroundColor(0x00000000);
            }
        }
    }
}

これをコメントに入れていただろうが、担当者が足りない

于 2013-10-19T09:33:23.310 に答える