java - 在屏幕上的任何地方触摸时隐藏和显示工具栏

标签 java android android-actionbar toolbar ontouchlistener

我已经成功实现了滚动工具栏隐藏/显示,但我被困在 onTouch 隐藏/显示工具栏。我研究了许多相关问题,但对我没有任何帮助。我希望我的工具栏在用户触摸屏幕隐藏并在屏幕再次触摸时再次显示,请帮助

I am using Android Studio

下面是我的 OnScrollListener java 类

this.mrecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            int mLastFirstVisibleItem = 0;

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            final int currentFirstVisibleItem = layout.findFirstVisibleItemPosition();

            if (currentFirstVisibleItem > this.mLastFirstVisibleItem) {
                HomePage.this.getSupportActionBar().hide();
            } else if (currentFirstVisibleItem < this.mLastFirstVisibleItem) {
                HomePage.this.getSupportActionBar().show();
            }

            this.mLastFirstVisibleItem = currentFirstVisibleItem;
        }
    });

已更新

 mrecyclerView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                ActionBar actionBar = getSupportActionBar();
                if(actionBar.isShowing()) {
                    actionBar.hide();
                } else
                    actionBar.show();
                return false;
            }
        });

此代码有效,但现在的问题是每当我触摸屏幕时它显示工具栏并且当我拿起我的手指隐藏自己,并且由于我正在使用 RecyclerView,因此滚动显示和隐藏变得越来越困难。请帮助使其稳定,这样如果我触摸一次它会保持显示状态,而在再次触摸时它会隐藏自己。

最佳答案

给你。这应该有效:)

layout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    if (actionBar.isShowing()) {
                        actionBar.hide();
                    } else {
                        actionBar.show();
                    }
                    return true;
                } else return false;
            }
        });

关于java - 在屏幕上的任何地方触摸时隐藏和显示工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45076100/

相关文章:

java - 子类可以使用相同的方法,但具有不同的变量类型吗?如何? (Java)

android - 最新的 android studio 更新不支持百分比布局?

java - ServerSocket 同时不会中断图像数据输入流

android - 仅在操作模式 (CAB) 中拆分操作栏

java - java中二元关系的表示

java - 无法为单元测试创​​建属性实例

java - Maven 在没有互联网连接的情况下无法执行目标

android - 如何使用 Android 的 “Surface” 类?

Android Toolbar 的 padding 比 ActionBar 多,如何修复

android - 在保持 android :targetSdkVersion to be 14 的同时在 ICS 上显示菜单按钮