将SwipeRefreshLayout与叠加模式ActionBar结合使用时,加载动画将显示在操作栏后面,使其几乎不可见。
我可以做些什么来在动作栏上显示它吗?
答案 0 :(得分:59)
在appcompat-v7库(v21.0.0)的Material Design版本中,SwipeRefreshLayout
获取了一个设置进度视图偏移的方法。
public void setProgressViewOffset (boolean scale,int start,int end)
刷新指示器的开始和静止位置始终位于刷新内容的顶部附近。此位置是一致的位置,但可以根据是否存在工具栏或操作栏在任一方向进行调整。
<强>参数强>
scale 如果没有高于z-order的视图,则设置为true,而不是将进度微调器设置为显示的位置。
start 此视图顶部应显示进度微调器的偏移量(以像素为单位)。
end 此视图顶部的偏移量(以像素为单位),在成功滑动手势后进度微调器应该停留在该位置。
答案 1 :(得分:13)
试试这段代码:
int top_to_padding=100;
swipe_refresh_layout.setProgressViewOffset(false, 0,top_to_padding);
我希望它适合你。
答案 2 :(得分:4)
Vijay Rajput的回答对我有用,但问题只出现在Kitkat或hight所以我包括:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
swipeLayout.setProgressViewOffset(false, 0,100);
}
答案 3 :(得分:2)
不是在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">
答案 4 :(得分:1)
编辑
这是appcompat-v7库v21之前的最佳解决方案。如果您使用的是v21或更新版本,请查看已批准的答案。如果你正在使用appcompat-v7&lt; 21 API这对你有帮助。
您可以通过将SwipeRefreshLayout(及其依赖项)复制到项目中并更改进度条的显示位置,添加上边距来轻松解决此问题。
为了让每个人都轻松,我发布了一个带有保证金的图书馆。看看这个:https://github.com/Naroh091/SwipeRefreshLayoutOverlay
希望它有所帮助!
答案 5 :(得分:1)
当我将我的依赖项从appcompat 19.1.0升级到21.0.0并且没有更改代码时,我现在遇到过这种情况。
这实际上是appcompat 21.0.0中SwipeRefreshLayout的已知问题。
在这里寻找解决方法: https://code.google.com/p/android/issues/detail?id=77712