java - 隐藏和显示后 float 操作按钮图标图像不显示

标签 java android floating-action-button

您好,我正在开发一个带有 float 操作按钮的 Android 应用程序。

第一次 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 图标将隐藏,向上滚动 FAB 图标将显示。

这是 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 图标图像 Before Scrolling and first time loading opening fab

Before Scrolling and first time loading closing Fab

这是滚动和点击后的图像。

fab icon image after scrolling and clicking.

最佳答案

我知道你发布这篇文章已经有很长时间了,但我也遇到了同样的问题。我通过在单击后对 fab 执行 hide() 和 show() 来解决它。 (在我的特殊情况下,我在 onClick 中更改了 drawable。在更改 drawable 后执行 hide() 和 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();
            }
        });

关于java - 隐藏和显示后 float 操作按钮图标图像不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53098446/

相关文章:

java - 从返回的字符串中提取数据

java - Matlab,如何在不解压的情况下读取zip.file中的文件

java - Mobile Vision API 读取的条码不正确

android - DailogFragment - getArguments/setArguments - 为什么要在包中传递参数?

java - 在 Android 上使用 Webdav 暂停/恢复上传请求

java - 底部工作表未按预期展开

java - 当 MongoTemplate 保存数据时,MongoDB 截断 LocalDateTime 纳秒

java - float 操作按钮位置错误

android - 我如何按住 float 按钮并将其移动到 android 屏幕上的任何位置?

android - 在 Android 中显示 FAB 上方的 snackbar