ответ

0

Сначала добавьте Xml View в ActionBar так:

LayoutInflater inflater = (LayoutInflater) getActionBar() 
      .getThemedContext().getSystemService(LAYOUT_INFLATER_SERVICE); 

    View customActionBarView = inflater.inflate(R.layout.main, null); 
final ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayOptions(
      ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME);  

    actionBar.setCustomView(customActionBarView, 
        new ActionBar.LayoutParams(
          ViewGroup.LayoutParams.MATCH_PARENT, 
          ViewGroup.LayoutParams.MATCH_PARENT)); 
      setContentView(R.layout.main); 

Затем сделайте изменения в onScrollStateChanged() метод:

@Override 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 

    switch (scrollState) { 
    case SCROLL_STATE_IDLE: 
      actionBar.show(); 
      break; 
    case SCROLL_STATE_TOUCH_SCROLL: 
      actionBar.hide(); 
      break; 
     } 
    } 
0
//declare this two globally 
    public static int ch = 0, cht = 1; 
    int myLastVisiblePos; 

    //Then add onScrollListener to your ListView 

    list.setOnScrollListener(new OnScrollListener() { 
     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
      int currentFirstVisPos = view.getFirstVisiblePosition(); 
      if (currentFirstVisPos > myLastVisiblePos) { 
       if (ch == 1) { 
        ch++; 
        cht = 1; 
        getActionBar().hide(); 
       } else if (ch == 0) { 
        getActionBar().show(); 
        ch++; 
       } 
      } 
      if (currentFirstVisPos < myLastVisiblePos) 
       if (cht == 1) 
        getActionBar().show(); 
      myLastVisiblePos = currentFirstVisPos; 
     } 

     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 
      // TODO Auto-generated method stub 
     } 
    }); 
+0

наконец я сделал это на основе коммутатора в случае onScrollStateChanged() ... И это прекрасно работает для меня. – Ashok

0

Салам.

Это решение работает для меня очень хорошо:

// mLastFirstVisibleItem defined globally 

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

    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     /** 
     * Hide actionbar when scroll down 
     */ 
     if (mLastFirstVisibleItem < firstVisibleItem) 
      if (getSupportActionBar().isShowing()) 
       getSupportActionBar().hide(); 

     if (mLastFirstVisibleItem > firstVisibleItem) 
      if (!getSupportActionBar().isShowing()) 
       getSupportActionBar().show(); 
     mLastFirstVisibleItem = firstVisibleItem; 
    } 
}); 

Источник: Android ActionBar hide/show when scrolling list view

Смежные вопросы