2016-06-07 14 views
0

Ich habe eine benutzerdefinierte Listenansicht und ein lineares Layout mit Textansicht am unteren Rand des Bildschirms. Ich habe einen OnScrollListener implementiert, um Actionbar und Linearlayout beim Scrollen zu verstecken und nach dem Scrollen wieder zurück zu holen. Die Actionbar verbirgt sich ohne Flackern und Stottern, aber mit dem linearen Layout ist das nicht möglich. Ich benutze Animation, um Layout zu verstecken, aber ich kann nicht vollständig erreichen. Ich brauche das Layout sollte wie Twitter-App verstecken, wo das untere Layout beim Scrollen reibungslos versteckt. Bitte helfen Sie.ausblenden Linearlayout in der Unterseite des Bildschirms während der Listenansicht scrollen

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

verstecken und zeigen 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> 

Antwort

0

Versuchen Sie folgendes:

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

     } 
    });