簡體   English   中英

通過協調器布局以編程方式隱藏工具欄

[英]hide toolbar programmatically with coordinator layout

經過廣泛的搜索,似乎沒有人對相同的行為感興趣。 如果我錯過了,請把我指到合適的地方。

問題如下:我在主活動xml中有一個協調器布局。 協調器布局內部有一個視圖尋呼機。 在我放入視圖分頁器的三個片段中的兩個片段中,有回收視圖觸發了工具欄在協調器布局中的隱藏。 但是,第三個片段沒有回收視圖。 問題在於,顯示工具欄時,第三個片段的繪制位置低於其應有的位置,從而將部分ui隱藏在屏幕底部邊緣下方。 如果工具欄處於隱藏狀態,則一切正常顯示。

所以問題是-如何以編程方式隱藏工具欄? 例如,當用戶在視圖尋呼機中滑動到第三片段時?

如果您認為有更好的方法-我也很高興聽到這一點。 謝謝!

回答您的問題:

我假設您的Toolbar包含在AppBarLayout 為了實現它,你可以添加一個ViewPager.OnPageChangeListenerViewPager ,並在onPageSelected()回撥電話setExpanded()在你的AppBarLayout

 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
            @Override
            public void onPageSelected(int position) {
                if(position == 2) { //the position of your non-scrolling fragment
                    AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar);
                    appBarLayout.setExpanded(false, true); //Hide the toolbar.
                }
            }
            @Override
            public void onPageScrollStateChanged(int state) { }
        });

替代方法:

別說更好的另一種方法,我讓您根據您的內容和用戶交互來判斷,可以是對非回收碎片保持相同的滾動效果。 您可以通過將片段內容包裝在NestedScrollView (包含在support-v4中)中,並使用相應的Behaviour來觸發該Behaviour ,該Behaviour將觸發工具欄隱藏在CoordinatorLayout

<android.support.v4.widget.NestedScrollView  
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:fillViewport="true">

<!-- Your non-recycler view fragment layout -->

</android.support.v4.widget.NestedScrollView>

一個關於滾動,標簽和CoordinatorLayout不錯的博客文章: https : //mzgreen.github.io/2015/06/23/How-to-hideshow-Toolbar-when-list-is-scrolling(part3)/

暫無
暫無

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

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