我的应用有一个列表视图,当我向下滚动时我想隐藏操作栏,当我向上滚动时取消隐藏操作栏。问题不在于隐藏/取消隐藏操作栏,但由于此而发生的闪烁。
我搜索了很多内容并找到了我发现的解决方案: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之上添加一个永久填充,所以如何添加一个标题来解决我的闪烁问题。
或者还有其他方法可以解决这个问题吗?
感谢。
答案 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""