当用户向上/向下滚动列表视图时,我想隐藏/显示兼容性操作栏。当操作栏消失时,列表也将占据操作栏的空间。
我已经采用了一种方法,但它产生了一种丑陋的闪烁。有没有人有这个问题的正确解决方案?所需的行为类似于Google+应用中的隐藏/显示机制(我对页脚不感兴趣)。
我尝试过的内容如下:
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (!tabletSize) {
final ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
lvNews.setOnScrollListener(new AbsListView.OnScrollListener() {
private int mLastFirstVisibleItem;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (mLastFirstVisibleItem < firstVisibleItem) {
if (actionBar.isShowing()) {
actionBar.hide();
}
}
if (mLastFirstVisibleItem > firstVisibleItem) {
if (!actionBar.isShowing()) {
actionBar.show();
}
}
mLastFirstVisibleItem = firstVisibleItem;
}
});
}
答案 0 :(得分:5)
为避免因重新调整布局而导致的闪烁,您可以使用操作栏中的覆盖属性。
https://developer.android.com/training/basics/actionbar/overlaying.html
但是此解决方案会导致操作栏覆盖您的列表视图,因此您需要添加此大小的标头:
"?android:attr/actionBarSize"
例如:
mVideosListView = (ListView) getActivity().findViewById(android.R.id.list);
mVideosListView.addHeaderView(getActivity().getLayoutInflater().inflate(R.layout.listview_header,null));
小心其他元素,例如导航抽屉,这也受此影响。
答案 1 :(得分:3)
您需要使操作栏覆盖列表视图。通过这样做,您有责任在必要时管理隐藏和显示操作栏。
答案 2 :(得分:2)
答案 3 :(得分:0)
请参阅我在该链接上的回答:How to hide and show the Android ActionBar like in Google Inbox app? 我使用的是RecyclerView,但想法是一样的