【问题标题】:Hide view when listview scrolling列表视图滚动时隐藏视图
【发布时间】:2017-09-08 09:08:15
【问题描述】:

我试图在列表视图滚动时隐藏一个视图 很难使其正常工作 - 所以如果可能的话我需要帮助

我有结构 1)CustomActionBar(相对布局) 2)需要滚动隐藏的视图(id = 1) 3)列表视图的标题(它只是一些标签id = 2的相对布局) 4) 列表视图项目

这是我在列表视图中检测自上而下滚动的代码

inboxListview.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if(motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                    y = motionEvent.getY();
                    prev_y = y;
                    dy= y;
                    Logger.e("prev y = "+prev_y);
                }
                if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
                    Logger.e("DY = "+dy);
                    dy = motionEvent.getY();
                    Logger.e("DY2 = "+dy);
                    if(dy<prev_y) {
                        Logger.e("move down 2");
                        float temp = dy-prev_y;
                        HomeActivity.changeListener.onScrollListenerHelper(1,temp);
                    }

                    if(dy>prev_y) {
                        Logger.e("move up 2");
                        float temp = dy-prev_y;
                        HomeActivity.changeListener.onScrollListenerHelper(2,temp);
                    }


                    prev_y = dy;
                    Logger.e("prev y new = "+prev_y);
                    return true;
                }
                return false;
            }
        });

    }

    private float y;
    private float dy;
    private float prev_y;

还有我试图隐藏视图的回调

 @Override
    public void onScrollListenerHelper(final int direction, final float ScrollYOffset) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (direction == 1) {
                    //move view up
                    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) topLayout.getLayoutParams();
                    int margin = params.topMargin;
                    params.topMargin = (margin + (int) ScrollYOffset);
                    Logger.e("TOP MARGIN " + params.topMargin);
                    Logger.e("RESUTL: " + (topLayout.getHeight() - topBar.getHeight()));
                    if (params.topMargin <= -(topLayout.getHeight() - topBar.getHeight())) {
                        params.topMargin = -(topLayout.getHeight() - topBar.getHeight());
                    }
                    topLayout.setLayoutParams(params);
                }

                if (direction == 2) {
                    //move view down
                    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) topLayout.getLayoutParams();
                    int margin = params.topMargin;
                    params.topMargin = (margin + (int) ScrollYOffset);
                    Logger.e("TOP MARGIN2 " + params.topMargin);
                    if (params.topMargin >= topBar.getHeight()) {
                        params.topMargin = topBar.getHeight();
                    }
                    topLayout.setLayoutParams(params);
                }
            }
        });

    }

在某种程度上它的工作。不好但工作。当我滚动列表视图时出现问题 - 在屏幕上它看起来像自上而下跳跃。 有什么可以帮助我改进我的代码吗?

【问题讨论】:

    标签: java android listview scroll


    【解决方案1】:

    我想你正在寻找这个:

    https://github.com/saulmm/CoordinatorExamples

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-27
      • 2018-05-16
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多