我有一个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会产生一些非常糟糕的反弹。
任何人都可以告诉我如何在隐藏动画期间将标签栏固定到底部?
非常感谢!