【问题标题】:Android ActionBar hide/show when scrolling list view滚动列表视图时Android ActionBar隐藏/显示
【发布时间】:2014-08-26 07:32:15
【问题描述】:

我想在用户向上/向下滚动列表视图时隐藏/显示兼容性操作栏。当操作栏消失时,列表也会占用操作栏的空间。

我采用了一种方法,但它会产生难看的闪烁。有人对这个问题有适当的解决方案吗?所需的行为类似于 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;
            }
        });
    }

【问题讨论】:

标签: android listview scroll android-actionbar


【解决方案1】:

为避免重新调整布局导致的闪烁,您可以使用操作栏中的overlaying 属性。

https://developer.android.com/training/basics/actionbar/overlaying.html

但是这个解决方案导致action bar覆盖了你的listview,所以你需要添加一个这样大小的标题:

"?android:attr/actionBarSize"

例如:

mVideosListView = (ListView) getActivity().findViewById(android.R.id.list);
mVideosListView.addHeaderView(getActivity().getLayoutInflater().inflate(R.layout.listview_header,null));

小心其他元素,例如导航抽屉,它也受此影响。

【讨论】:

  • Varela Gomez 我知道已经有一段时间了,但你能说出listview_header.xml的内容吗?
【解决方案2】:

您需要使操作栏覆盖列表视图。通过这样做,您有责任在必要时管理隐藏和显示操作栏。

以下页面有一个示例: http://www.techrepublic.com/article/pro-tip-maximize-android-screen-real-estate-by-showing-and-hiding-the-action-bar/

【讨论】:

    【解决方案3】:

    你可以试试这个库。希望对你有帮助https://github.com/ksoichiro/Android-ObservableScrollView

    【讨论】:

      【解决方案4】:

      在该链接上查看我的答案:How to hide and show the Android ActionBar like in Google Inbox app? 我正在使用 RecyclerView 但想法是一样的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多