为了账号安全,请及时绑定邮箱和手机立即绑定

带有Google Maps API v2的ViewPager:神秘的黑色视图

带有Google Maps API v2的ViewPager:神秘的黑色视图

HUX布斯 2019-11-06 11:07:25
我已经将新的Google Maps api v2片段集成到了视图传呼器中。从地图片段滚动时,黑色视图会与相邻片段重叠。有人解决了吗?public static class PagerAdapter extends FragmentPagerAdapter{    public PagerAdapter(FragmentManager fm) {        super(fm);    }    @Override    public int getCount() {        return NUM_ITEMS;    }    @Override    public Fragment getItem(int position) {        Fragment pageFragment;        switch (position) {        case 0:            pageFragment = new TabAFragment();            break;        case 1:            pageFragment = new TabBFragment();            break;        case 2:            pageFragment = SupportMapFragment.newInstance();            break;        default:            pageFragment = null;            break;        }        return pageFragment;    }}
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

通过在ViewPager内部a的顶部放置另一个具有透明背景的视图,我能够停止过渡后留下的黑色表面FrameLayout:


<FrameLayout

    android:layout_width="match_parent"

    android:layout_height="match_parent" >


    <android.support.v4.view.ViewPager

        android:id="@+id/fragment_container"

        android:layout_width="match_parent"

        android:layout_height="match_parent" >

    </android.support.v4.view.ViewPager>


    <!-- hack to fix ugly black artefact with maps v2 -->

    <FrameLayout 

        android:layout_width="match_parent"

        android:layout_height="match_parent" 

        android:background="@android:color/transparent" />


</FrameLayout>


查看完整回答
反对 回复 2019-11-06
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

SlidingMenu和ViewPager遇到相同的问题。我注意到地图片段中的控件按钮在左侧工件中不是黑色的。我通过覆盖onCreateView()方法解决了问题MapFragment (SupportMapFragment)


@Override

public View onCreateView(LayoutInflater inflater, 

                         ViewGroup view, 

                         Bundle savedInstance) {


    View layout = super.onCreateView(inflater, view, savedInstance);

    FrameLayout frameLayout = new FrameLayout(getActivity());

    frameLayout.setBackgroundColor(

        getResources().getColor(android.R.color.transparent));

    ((ViewGroup) layout).addView(frameLayout,

        new ViewGroup.LayoutParams(

            LayoutParams.FILL_PARENT, 

            LayoutParams.FILL_PARENT

        )

    );

    return layout;

}


查看完整回答
反对 回复 2019-11-06
?
慕的地10843

TA贡献1785条经验 获得超8个赞

Google为此发布了一个修复程序,但仅针对4.1+版本(您无需下载新版本的PlayServices,它们使用了服务器端标志)


这就是我用来绕过此问题的方法-确保您不会浪费任何CPU周期大于等于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);

            }

        }

    }

}


查看完整回答
反对 回复 2019-11-06
  • 3 回答
  • 0 关注
  • 502 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信