2016-06-07 7 views
0

화면 하단에 맞춤 목록보기와 선형보기가있는 textview가 있습니다. OnScrollListener를 구현하여 스크롤하는 동안 작업 표시 줄 및 선형 레이아웃을 숨기고 스크롤이 완료되면 다시 가져옵니다. 액션 바는 아무런 깜빡 거리지 않고 매끄럽게 숨어 있지만 선형 배치는 숨어 있습니다. 레이아웃을 숨기기 위해 애니메이션을 사용하고 있지만 완전히 달성 할 수는 없습니다. 스크롤이 원활하게 숨어있는 하단 레이아웃이 트위터 앱처럼 숨겨져 있어야합니다. 도와주세요.목록보기 스크롤 중에 화면 아래쪽에 선형 레이아웃을 숨기십시오.

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> 

답변

0

이 시도 :

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) { 

     } 
    });