底部导航隐藏的小吃吧

时间:2017-09-10 20:20:12

标签: android android-layout android-snackbar

我的Snackbar被底部导航按钮隐藏。

Hidden Snackbar

Activity能够切换全屏模式,我不想使用边距偏移来解决这个问题。

我的XML布局是:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/image_background"
    tools:context="link.standen.michael.slideshow.ImageActivity">

    <ImageView
        android:id="@+id/fullscreen_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:keepScreenOn="true"
        android:contentDescription="@string/image_description"/>

    <!-- Image Details Overlay -->
    <LinearLayout
        android:id="@+id/image_details1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|start"
        android:orientation="vertical"
        android:visibility="gone"
        android:background="@color/black_overlay"
        android:padding="@dimen/overlay_padding">

        ...

    </LinearLayout>

    <!-- This FrameLayout insets its children based on system windows using
         android:fitsSystemWindows. -->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

        <RelativeLayout
            android:id="@+id/fullscreen_content_controls"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            tools:ignore="UselessParent">

            <LinearLayout
                android:id="@+id/fullscreen_content_controls_buttons"
                style="?metaButtonBarStyle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:background="@color/black_overlay"
                android:orientation="horizontal">

                ...
            </LinearLayout>

            <!-- Image Details Overlay -->
            <LinearLayout
                android:id="@+id/image_details2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@+id/fullscreen_content_controls_buttons"
                android:layout_alignParentStart="true"
                android:orientation="vertical"
                android:background="@color/black_overlay"
                android:padding="@dimen/overlay_padding">

             ...

            </LinearLayout>
        </RelativeLayout>
    </FrameLayout>

</FrameLayout>

我已经尝试将快餐栏定位在屏幕上的各种元素上,但是当应用程序未处于全屏模式时,它似乎总是隐藏在底部导航按钮后面。

用于全屏观看的标志:

mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

我需要对布局进行哪些更改才能使小吃栏正确对齐?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

当应用程序处于全屏模式时,snackbar将附加到主要全屏内容。在这种情况下R.id.fullscreen_content

当应用程序未处于全屏模式时,snackbar会附加到CoorderinatorLayoutFrameLayout嵌套的新android:fitsSystemWindows="true"

很高兴不必像这样管理它,但解决方案有效。如果有更好的事情,请告诉我。