删除隐藏/取消隐藏的操作栏上的闪烁

时间:2014-12-23 07:49:04

标签: android listview

我的应用有一个列表视图,当我向下滚动时我想隐藏操作栏,当我向上滚动时取消隐藏操作栏。问题不在于隐藏/取消隐藏操作栏,但由于此而发生的闪烁。

我搜索了很多内容并找到了我发现的解决方案:StackOverflow Question

根据给出的解决方案:我必须添加paddingTop listview ,其高度等于动作栏的高度,然后添加标题。

所以,我在listview顶部设置了填充,高度为"?android:attr/actionBarSize",但我仍然坚持下一步做什么。 header.xml文件的内容是什么。

我的代码: -

             MyAdapter ma = new MyAdapter();
             ListView lv     = (ListView)findViewById(R.id.listView);
            lv.setAdapter(ma);

            ma.notifyDataSetChanged();

            //setting onScrollListener on the listview
            lv.setOnScrollListener(new OnScrollListener(){
                private int mLast;
                @Override
                public void onScrollStateChanged(AbsListView view,
                        int scrollState) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onScroll(AbsListView view, int firstVisibleItem,
                        int visibleItemCount, int totalItemCount) {
                    // TODO Auto-generated method stub
                    if(mLast<firstVisibleItem)
                    {
                        if(myactionbar.isShowing())
                        {
                            myactionbar.hide();
                        }
                    }
                    if(mLast>firstVisibleItem)
                    {
                        if(!myactionbar.isShowing())
                        {
                            myactionbar.show();
                        }
                    }
                    mLast=firstVisibleItem;
                }

            });

listview.xml: -

<ListView 
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:divider="@null"
    android:paddingTop="?android:attr/actionBarSize"

    />

的onCreate(): -

 requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

所有这一切都是在listview之上添加一个永久填充,所以如何添加一个标题来解决我的闪烁问题。

或者还有其他方法可以解决这个问题吗?

感谢。

2 个答案:

答案 0 :(得分:6)

我不知道为什么你需要标题摆脱闪烁。想法是当你添加

 requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

listview是在ActionBar下面绘制的,这就是为什么在动作栏隐藏时它的布局不会改变的原因。要在屏幕打开时防止ActionBar重叠内容,您可以添加clipToPadding属性:

<ListView
    …
    android:paddingTop="?android:attr/actionBarSize"
    android:clipToPadding="false"
    android:scrollbarStyle="outsideOverlay" />

<强>编辑: 我明白了,你需要标题来模拟顶部填充。

答案 1 :(得分:0)

很抱歉迟到的回复。

我遇到了同样的问题。但我这样解决了这个问题:

您应该在RecyclerView或ListView下方声明工具栏,并将此行放在RecyclerView或ListView中:

          "android:paddingTop="?attr/actionBarSize"

          android:clipToPadding="false"

         android:scrollbarStyle="outsideOverlay""