列表视图滚动时在屏幕底部隐藏线性布局

Posted

技术标签:

【中文标题】列表视图滚动时在屏幕底部隐藏线性布局【英文标题】:hide linearlayout in bottom of screen while listview scroll 【发布时间】:2016-10-06 22:52:11 【问题描述】:

我在屏幕底部有一个自定义列表视图和一个带有文本视图的线性布局。我已经实现了一个 OnScrollListener 以在滚动时隐藏操作栏和线性布局,并在滚动完成后返回。操作栏隐藏得很顺畅,没有任何闪烁和卡顿,但线性布局却没有。我正在使用动画来隐藏布局,但我无法完全实现。我需要布局应该像 twitter 应用程序一样隐藏,其中底部布局在滚动时平滑隐藏。请帮忙。

mViews.lists.setOnScrollListener(new AbsListView.OnScrollListener() 
        int mLastFirstVisibleItem = 0;
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) 

        

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) 
            android.support.v7.app.ActionBar actionBar = getSupportActionBar();
            if (view.getId() == mViews.lists.getId()) 
                final int currentFirstVisibleItem =  mViews.lists.getFirstVisiblePosition();

                if (currentFirstVisibleItem > mLastFirstVisibleItem) 
                    // getSherlockActivity().getSupportActionBar().hide();
                    if (actionBar != null) 
                        actionBar.hide();
                       mViews.linear.startAnimation(animHide);
                       mViews.linear.setVisibility(View.GONE);



                    
                 else if (currentFirstVisibleItem < mLastFirstVisibleItem) 
                    // getSherlockActivity().getSupportActionBar().show();
                    actionBar.show();
                 mViews.linear.startAnimation(animShow);
                    mViews.linear.setVisibility(View.VISIBLE);



                

                mLastFirstVisibleItem = currentFirstVisibleItem;
            
        
    );

隐藏和显示 xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<scale
    android:fromYScale="1.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toYScale="0.0" />
</set>



<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >

<scale
    android:fromYScale="0.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toYScale="1.0" />
</set>

【问题讨论】:

【参考方案1】:

试试这个:

lv.setOnScrollListener(new AbsListView.OnScrollListener() 
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) 

            if(scrollState == SCROLL_STATE_TOUCH_SCROLL)

             //Paste here the code for hiding the layout

            else

             //Paste here the code for showing the layout

            
        

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) 

        
  );

【讨论】:

以上是关于列表视图滚动时在屏幕底部隐藏线性布局的主要内容,如果未能解决你的问题,请参考以下文章

线性布局或滚动视图被推离屏幕

线性布局不会填满整个屏幕

拆分滚动视图使其伸展一半的屏幕,但它忽略了布局重量

两个线性布局中的滚动视图?

如何以编程方式在顶部和底部的垂直线性布局中设置一个视图?

如何在列表视图下方放置固定按钮?