CoordinatorLayout Toolbar 进入时不可见,直到完全展开

9
我的activity_main.xml中包含一个名为content_layout.xmlCoordinatorLayout。在这个CoordinatorLayout中,有一个AppBarLayout,其中包含一个Toolbar,然后是一个用于片段内容的LinearLayout
当包含RecyclerView的片段向上滚动时,工具栏成功退出。问题在于向下滚动以恢复工具栏时,工具栏不会出现,直到完整高度的工具栏被滚动,因此留下了一个难看的白色框,如图所示。

toolbar

content_layout.xml

<android.support.design.widget.CoordinatorLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    </android.support.design.widget.AppBarLayout>

    <!-- The main content view for fragments-->
    <LinearLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

</android.support.design.widget.CoordinatorLayout>

工具栏是通过MainActivityonCreate()方法进行初始化的:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

我希望能得到任何有关解决此问题的建议。谢谢。

1个回答

13

我曾经遇到同样的问题,唯一解决它的方法是在AppBarLayout内不要只放置toolbar,而是放置其他东西。我在我的布局中放了一个无形的视图放在工具栏下面。这不是最理想的解决方案,但它起作用了。

<android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">      

     <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

     <View
        android:id="@+id/appbar_bottom"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/transparent"
        android:visibility="invisible"/>

</android.support.design.widget.AppBarLayout>

1
太棒了,谢谢!运行得很好。尽管和你一样,我也不完全明白为什么。 - McGuile
太棒了,谢谢你提供这个。你也可以将高度设置为0.1dp,这样它就几乎不可见了(好吧,几乎不可见 ;) )。 - zoroz
1
非常感谢@Jon Cordeiro。 - Mohammed Saleem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接