触摸屏幕上的任意位置隐藏和显示工具栏

时间:2017-07-13 09:04:49

标签: java android android-actionbar toolbar ontouchlistener

我已经成功实现了滚动工具栏上的隐藏/显示,但我被困在 onTouch隐藏/显示工具栏。我研究过很多相关的问题,但对我来说没什么用。当用户触摸屏幕时,我希望我的工具栏隐藏,当再次触摸时,我希望再次显示,请帮助

  

我正在使用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 时,很难滚动显示和隐藏所有内容。请帮助使其稳定,这样如果我触摸一旦它保持显示和另一次触摸它隐藏自己。

2 个答案:

答案 0 :(得分:1)

你去吧。这应该工作:)

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

答案 1 :(得分:0)

将onTouchListener用于根布局。并在回调中编写代码。