隐藏Android片段时可以点击(Maps v2 + Sliding Drawer问题)

时间:2015-10-13 21:37:11

标签: android google-maps android-fragments slidingdrawer

有趣的问题在这里,我希望有人能说清楚。

我目前在同一个屏幕上有一个带有滑动抽屉的地图v2片段(我不知道)。一旦用户完成他们的任务,他们可以拉动滑动绘图并单击“完成”。这使用了SupportFragmentManager,我基本上最终用一个全新的片段替换了屏幕内容。

但是,用户仍然可以单击滑动抽屉上的内容,即使它已被新片段替换。任何提示?

以下是责任代码的骨架结构:

activity_map.xml

<RelativeLayout android:id="@+id/activity_map">

    <LinearLayout>
        <include layout="@layout/toolbar"/>

        <fragment android:id="@+id/fragment_map"
            android:name="com.foo.fragment.MapFragment" />
    </LinearLayout>

    <SlidingDrawer>
        ...
    </SlidingDrawer>

</RelativeLayout>

MapActivity.java

...
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.activity_map, newFragment, TAG);
transaction.addToBackStack(null);
transaction.commit();

2 个答案:

答案 0 :(得分:2)

你应该尝试这样做 activity_map.xml

<FrameLayout
android:id="@+id/container>

</FrameLayout>

fragment_map.xml

<RelativeLayout android:id="@+id/activity_map">

    <LinearLayout>
        <include layout="@layout/toolbar"/>

        <fragment android:id="@+id/fragment_map"
            android:name="com.foo.fragment.MapFragment" />
    </LinearLayout>

    <SlidingDrawer>
        ...
    </SlidingDrawer>

</RelativeLayout>

现在,在您的活动中,您应首先在FrameLayout(activity_map.xml)中启动一个具有布局fragment_map的新片段(比如说AMapFragment)。请注意,以下代码将成为片段的一部分(AMapFragment)

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.activity_map, newFragment, TAG);
transaction.addToBackStack(null);
transaction.commit();

并将此行transaction.replace(R.id.activity_map, newFragment, TAG);更改为transaction.replace(R.id.container, newFragment, TAG);

答案 1 :(得分:0)

在这种情况下,最简单和最优雅的解决方案是在我的新片段的静态xml布局文件中设置clickable =“true”。

下一步是手动将侦听器关联到此片段上的新按钮和文本编辑。

像魅力一样!