动态插入片段时Android元素重叠

时间:2017-11-17 20:53:05

标签: android android-layout android-fragments android-xml android-constraintlayout

我的项目包含一个主活动,当在底部导航栏上按下选项卡时,该活动会将不同的碎片加载到视图中。蓝色描绘了活动控件,橙色应该包含在其中一个片段中。在这种情况下,它是一个MapBox MapView,角落里有FAB。

我的问题是我似乎无法使片段容器高度正确;顶部或底部按钮(有时两者)总是垂直切断状态栏或底部导航栏下方。

Crappy PowerPoint mockup depicting a mobile screen with a status bar, embedded fragment, bottom navigation bar, and floating action buttons in each of the right-hand corners

我当前的布局(为简洁起见删除了不相关的属性):

activity_main.xml中:

<ConstraintLayout
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/nav_bottom">
        <FrameLayout
            android:id="@+id/fragment_container"
            android:layout_height="wrap_content">
        </FrameLayout>
    </RelativeLayout>

    <BottomNavigationView
        android:id="@+id/nav_bottom"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:menu="@menu/nav_bottom">
    </BottomNavigationView>

</ConstraintLayout>

fragment_map.xml:

<ConstraintLayout
    android:layout_height="wrap_content">

    <MapView
        android:id="@+id/map_view"
        android:layout_height="match_parent"
        mapbox:layout_constraintTop_toTopOf="parent"
        mapbox:layout_constraintBottom_toBottomOf="parent">
    </MapView>

    <FloatingActionButton
        android:id="@+id/button_top"
        android:layout_height="wrap_content"
        mapbox:layout_constraintTop_toTopOf="@id/map_view"
        mapbox:layout_constraintRight_toRightOf="@id/map_view" />

    <FloatingActionButton
        android:id="@+id/button_bottom"
        android:layout_height="wrap_content"
        mapbox:layout_constraintBottom_toBottomOf="@id/map_view"
        mapbox:layout_constraintRight_toRightOf="@id/map_view" />

</ConstraintLayout>

我正在将片段添加到活动中,如下所示:

getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.fragment_container, fragment, "myFrag")
        .commit();

1 个答案:

答案 0 :(得分:1)

更改布局样式 activity_main.xml:

df['C'] = df['Sample'].apply(lambda x: {'test{}'.format(x):'Unknown'})
df

    Sample  C
0   0   {'test0': 'Unknown'}
1   1   {'test1': 'Unknown'}
2   2   {'test2': 'Unknown'}
3   3   {'test3': 'Unknown'}
4   4   {'test4': 'Unknown'}

和您的 fragment_map.xml:

<LinearLayout
    android:layout_height="match_parent"
    orientation = vertical>

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_height="0dp"
        weight = "1">

    </FrameLayout>

    <BottomNavigationView
        android:id="@+id/nav_bottom"
        android:layout_height="wrap_content"
        app:menu="@menu/nav_bottom">

    </BottomNavigationView>

</LinearLayout>

编辑了你的fragment_map.xml,看到了更改