imagem ícone do botão de ação não mostrando depois de esconder e mostrar flutuante

Dithesh Vishalakshan:

Oi eu estou desenvolvendo uma aplicação android com botão Floating Ação.

Na primeira vez que o ícone mostra FAB ícone de imagem. Depois, quando eu ocultar e mostrar a imagem do ícone ficará em branco quando eu clique no ícone FAB

Este é o código que é usado para esconder a 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);
            }

        });

onscrolling para baixo o ícone FAB irá esconder e onScrolling-se o ícone FAB irá mostrar.

E este é o código para 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);
                }
            }
        });

Esta é a imagem do ícone fab que aparecem antes do desdobramento e o primeiro tempo de carregamento Antes de rolagem e primeira vez Fab abertura de carregamento

Antes de rolagem e fechamento primeiro tempo de carregamento Fab

esta é a imagem depois de rolagem e clicando.

imagem ícone fab depois de rolagem e clicando.

Miguel Island:

Eu sei que tem sido um longo tempo desde que você postou isso, mas eu tive o mesmo problema. Eu resolvi fazendo uma hide () e, em seguida, um show () ao fab após clicar. (No meu caso particular, eu mudar o drawable em onClick. Fazendo hide () e show () depois de mudar o drawable resolveu o problema).

Seu código deve ficar assim:

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();
            }
        });

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=177899&siteId=1
Recomendado
Clasificación