非表示と表示した後に表示されていないフローティングアクションボタンのアイコンの画像

Dithesh Vishalakshan:

こんにちは私は、フローティング操作ボタンでアンドロイドのアプリケーションを開発しています。

最初の時の画像アイコンFABアイコンを示しています。私は非表示と表示したときにアイコン画像が空白になります後、私はFABのアイコンをクリックすると、

これは、FABを隠すために使用されるコードであります

   mainScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
            @Override
            public void onScrollChanged() {
                // previousScrollY this variable is define in your Activity or Fragment
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Log.i(TAG, "onScrollChanged: scrollview position " + mainScrollView.getScrollY() + " " +
                                previousScrollY + " " +
                                mainScrollView.getChildAt(0).getHeight());
                        if (mainScrollView.getScrollY() > previousScrollY) {
                            fab.hide();
                        } else if (mainScrollView.getScrollY() < previousScrollY) {
                            fab.show();
                        }
                        if (mainScrollView.getScrollY() >= mainScrollView.getChildAt(0).getHeight()) {
                            previousScrollY = mainScrollView.getChildAt(0).getHeight();
                        } else if (mainScrollView.getScrollY() < 0) {
                            previousScrollY = 0;
                        } else {
                            previousScrollY = mainScrollView.getScrollY();
                        }
                    }
                }, 200);
            }

        });

非表示になりますFABアイコンをダウンonscrollingと表示されますFABアイコンをonScrolling。

そして、これはFAB setOnClicklistenerのコードです

    fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (sheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
                    sheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
                    fab.setImageResource(R.drawable.ic_close);
                } else {
                    sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                    fab.setImageResource(R.drawable.ic_filter);
                }
            }
        });

これは、スクロールして初めてロードする前に表示され、ファブアイコン画像です スクロールと初めてのローディング開口部FAB前

スクロールと初めてのFabを閉じるロードする前に

これは、スクロールやクリックした後の画像です。

スクロールやクリックした後、ファブアイコン画像。

ミゲル島:

私はあなたがこの投稿が、私は同じ問題を抱えていたので、それは長い時間をされている知っています。私がクリックした後、ファブへ、その後非表示()とshow()を実行して、それを解決しました。(私の特定のケースでは、私はonClickの中に描画可能に変更します。非表示を行う()とshow()描画可能に変更した後、問題を解決しました)。

あなたのコードは次のようになりなければなりません。

fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (sheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
                    sheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
                    fab.setImageResource(R.drawable.ic_close);
                } else {
                    sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                    fab.setImageResource(R.drawable.ic_filter);
                }
                fab.hide();
                fab.show();
            }
        });

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=177900&siteId=1