Android Tabbar在getSupportActionBar上弹跳隐藏

时间:2015-09-05 13:42:21

标签: android android-fragments gridview android-actionbar tabwidget

我有一个Android应用程序,其结构是:

  • 标签栏(屏幕底部)。

  • 每个标签都有一个工具栏(位于操作栏下方)。

其中一个片段有一个GridView,我想在用户滚动网格时隐藏ActionBar。这样工作正常,但在隐藏防范期间Tabbar而不是固定在屏幕底部,它会产生某种反弹。

这些是XML。

  • 标签栏活动。

    < android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@android:id/tabhost"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
    
    < RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
     < FrameLayout
    android:id="@android:id/tabcontent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" />
    
    < TabWidget
    android:id="@android:id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="-5dp"
    android:paddingTop="5dp"
    android:background="@color/white"/>
    
    < /RelativeLayout>
    
    < /android.support.v4.app.FragmentTabHost>
    
  • 每个标签片段XML:

    < android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" / >
    
  • 每个片段都有自己的XML,但我要求的是这个。它只是一个带有GridView的片段。

       < FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         android:layout_width="match_parent"
         android:layout_height="match_parent" >
    
    <GridView
          android:id="@+id/fragment_grid_id"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:numColumns="2"
          android:verticalSpacing="5dp"
          android:horizontalSpacing="5dp"
          android:stretchMode="columnWidth"
          android:gravity="center"
          android:paddingBottom="50dp" />
    
     < /FrameLayout>
    

在这个片段中,我向这个GridView添加了一个OnScrollListener:

    gridView = (GridView)fragment.findViewById(R.id.fragment_grid_id);
    gridAdapter = new MyGridAdapter(getActivity(), myItems);
    gridView.setAdapter(gridAdapter);
    gridView.setOnItemClickListener(this);
    gridView.setOnScrollListener(this);

听众的方法就是:

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

@Override
public void onScroll(final AbsListView view, final int firstVisibleItem, final int visibleItemCount, final int totalItemCount) {
    int currentFirstVisPos = view.getFirstVisiblePosition();
    if(currentFirstVisPos > scrollPrevItem) {
        ((ActionBarActivity)myActivity).getSupportActionBar().hide();
    }
    else if(currentFirstVisPos < scrollPrevItem) {
        ((ActionBarActivity)myActivity).getSupportActionBar().show();
    }
    scrollPrevItem = currentFirstVisPos;
}

正如我所说,当用户向下滚动时,操作栏会隐藏,但是tabbar会产生一些非常糟糕的反弹。

任何人都可以告诉我如何在隐藏动画期间将标签栏固定到底部?

非常感谢!

0 个答案:

没有答案