当使用SwipeRefreshLayout与覆盖模式ActionBar结合使用时,加载动画将显示在ActionBar后面,几乎看不见。有什么办法可以使其显示在ActionBar顶部吗?
SwipeRefreshLayout
增加了一个设置进度视图偏移量的方法。
https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html#setProgressViewOffset(boolean,%20int,%20int)
刷新指示器的起始和静止位置总是位于刷新内容顶部附近。这个位置是一个一致的位置,但可以根据是否有工具栏或操作栏而向任何方向调整。
参数
scale:如果没有高于进度旋转器所在位置的视图,则设置为 true。
start:进度旋转器应该出现的像素偏移量,相对于此视图的顶部。
end:在成功滑动手势之后,进度旋转器应该停止的像素偏移量,相对于此视图的顶部。尝试这段代码:
int top_to_padding=100;
swipe_refresh_layout.setProgressViewOffset(false, 0,top_to_padding);
我希望这对你有用。
Vijay Rajput的答案对我有用,但问题只存在于Kitkat或更高版本,因此我添加了以下内容:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
swipeLayout.setProgressViewOffset(false, 0,100);
}
不要在SwipeRefreshLayout上设置paddingTop,而是设置layout_marginTop将使进度条可见:
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?android:attr/actionBarSize">
我最近在将我的依赖从appcompat 19.1.0升级到21.0.0时遇到了这个问题,而没有进行任何代码更改。
实际上,这是appcompat 21.0.0中SwipeRefreshLayout已知的问题。
在此处查看解决方法: https://code.google.com/p/android/issues/detail?id=77712
编辑
在v21版本之前的appcompat-v7库中,这是最佳解决方案。如果您使用的是v21或更新版本,请查看批准的答案。如果您正在使用appcompat-v7 < 21 API,则仍将对您有所帮助。