簡體   English   中英

在Android中滾動時隱藏工具欄的問題

[英]Issue to hide Toolbar when scrolling in android

我有一個帶有NavigationDrawer和工具欄的活動。 我想在滾動子片段視圖之一時消失太棒時遇到問題。 一切正常,除了底部有一些視圖,該視圖的大小與消失的工具欄完全相同。

我制作了一個GIF動畫來顯示問題。 由於我的聲譽,我無法直接發布圖像,但是此gif此gif顯示了問題

我試圖弄清楚這是從哪里來的。 看來這是從運行時放置片段視圖的容器FrameLayout中獲得的。 我將其背景更改為綠色,以便可以識別它。

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

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

    <include
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_scrollFlags="scroll|enterAlways"
        layout="@layout/toolbar" />

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/darkGreen"
        tools:context="org.cddevlib.breathe.MainActivity" />
</LinearLayout>

<fragment
    android:id="@+id/navigation_drawer"
    android:name="org.cddevlib.breathe.NavigationDrawerFragment"
    android:layout_width="@dimen/navigation_drawer_width"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    tools:layout="@layout/fragment_navigation_drawer" /> </android.support.v4.widget.DrawerLayout>

這是包含的工具欄布局

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
  android:id="@+id/toolbar"
  android:layout_width="match_parent"
  android:layout_height="?attr/actionBarSize"
  app:layout_collapseMode="pin"
  app:layout_scrollFlags="scroll|enterAlways"
  android:fitsSystemWindows="true"
  app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>

最后是從片段視圖加載的片段:

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/black" >

   <include
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_scrollFlags="scroll|enterAlways"
    layout="@layout/toolbar" />

    <android.support.v4.widget.NestedScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:background="@color/white"
        android:fillViewport="true" >

        (...)

請注意,我再次在該布局中包含工具欄,因為我希望通過隱藏/添加工具欄為應用程序中的每個片段使用不同的工具欄。

    toolbar = (Toolbar) ((View) vw).findViewById(R.id.toolbar);
            if (toolbar != null) {
                // // for crate home button
                activity = (AppCompatActivity) getActivity();
                activity.getSupportActionBar().hide();
                toolbar.setBackgroundDrawable(new ColorDrawable((ColorUtils.getColorDark(DataModule.getInstance()
                        .getMainActivity()))));
                activity.setSupportActionBar(toolbar);
                activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            }

因此,感謝sanat shukla,我的問題是我的問題是我在片段視圖中使用了過多的AppBarLayout。 在我的片段視圖中,AppBarLayout是我所有組件的主要布局,但事實並非如此! 它旨在容納工具欄內容! 謝謝

這不是問題。 這是android提供的很棒的動畫和支持。 當您將協調器布局與工具欄一起使用時,滾動列表時它將顯示很酷的動畫。

Design庫將其帶入了一個新的高度:使用AppBarLayout可以使您的工具欄和其他視圖(例如TabLayout提供的選項卡)對標有ScrollingViewBehavior的同級視圖中的滾動事件做出反應。

從這里閱讀: http : //android-developers.blogspot.in/2015/05/android-design-support-library.html

如果您不想隱藏工具欄,則不要使用協調器布局和帶有工具欄的應用欄。

試試這個片段:

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

     <! -- Your Scrollable View -->
    <android.support.v4.widget.NestedScrollView
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/scrollView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:background="@color/white"
            android:fillViewport="true" >
    <android.support.v4.widget.NestedScrollView/>
    <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    <include
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_scrollFlags="scroll|enterAlways"
            layout="@layout/toolbar" />
     </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM