web-dev-qa-db-ja.com

CoordinatorLayoutでプログラム的にツールバーを表示/非表示

RecycleViewToolBarをスクロールまたは非表示または表示する(アニメーション付き)。 enter image description here

ToolBarをプログラムで返すにはどうすればよいですか?

42
Artem

ツールバーがおそらくCoordinatorLayout内にあるAppBarLayout内にある場合、このようなものが機能するはずです。

AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
            appBarLayout.setExpanded(true, true);

またはそれを崩壊させる

AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
            appBarLayout.setExpanded(false, true);

定義はこちら

setExpanded(boolean expanded, boolean animate)

このメソッドは、サポートライブラリのv23から利用できることに注意してください。参照用にいくつかの ドキュメント があります。重要なことは、「AppBarLayoutのスクロールと同様に、メソッドは、このレイアウトがCoordinatorLayoutの直接の子であることに依存しています。 "これが役に立てば幸いです!

96
Jraco11

それはあなたが探しているものですか?

Toolbar toolbar = findViewById(R.id.toolbar);  // or however you need to do it for your code
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(0);  // clear all scroll flags

リンク: デザインサポートライブラリを使用する場合、プログラムでツールバーのスクロールを有効/無効にする方法

ツールバーを非表示にするには、次のようにできます:

toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start();

もう一度表示したい場合は、次のように呼び出します:

toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start();
10
johnrao07

私の問題は@Artemと非常によく似ていて、多くの修正を試みましたが、どれもうまくいきませんでした。 AppBarLayoutを使用すると、@ Jraco11の答えは正しいです。 @ johnrao07は私には役に立たなかった。しかし、Toolbarを使用すると、この問題の完璧な解決策が見つかりました。

ツールバーをプログラムで非表示にするには

if (toolbar.getParent() instanceof AppBarLayout){
                    ((AppBarLayout)toolbar.getParent()).setExpanded(false,true);
                }

ツールバーをプログラムで表示するには

if (toolbar.getParent() instanceof AppBarLayout){
                        ((AppBarLayout)toolbar.getParent()).setExpanded(true,true);

元の回答を参照(@Android HHTによる回答):-programmatically-show- toolbar-after-hidden-by-scrolling-Android-design-library

0
Johnett Mathew