当 SwipeRefreshLayout 与覆盖模式的 ActionBar 结合使用时,加载动画会显示在 actionbar 的后面,使其几乎不可见。
我可以做些什么来在操作栏上显示它吗?
当 SwipeRefreshLayout 与覆盖模式的 ActionBar 结合使用时,加载动画会显示在 actionbar 的后面,使其几乎不可见。
我可以做些什么来在操作栏上显示它吗?
在 appcompat-v7 库 (v21.0.0) 的 Material Design 版本中,SwipeRefreshLayout
获取设置进度视图偏移的方法。
public void setProgressViewOffset(布尔值,int start,int end)
刷新指示器的开始和停止位置始终位于刷新内容的顶部附近。此位置是一个一致的位置,但可以根据是否存在工具栏或操作栏在任一方向上进行调整。
参数
如果没有比进度微调器设置显示的 z 顺序更高的视图,则设置为 true 。
start 距此视图顶部的偏移量(以像素为单位),进度微调器应出现在该处。
end 在成功滑动手势后进度微调器应该停止的距离此视图顶部的偏移量(以像素为单位)。
试试这个代码:
int top_to_padding=100;
swipe_refresh_layout.setProgressViewOffset(false, 0,top_to_padding);
我希望它对你有用。
Vijay Rajput 的答案对我有用,但问题只出在 Kitkat 或 hight 上,所以我包括:
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-v7 库 v21 之前的最佳解决方案。如果您使用的是 v21 或更新版本,请查看已批准的答案。如果您使用的是 appcompat-v7 < 21 API,这仍然会对您有所帮助。
您可以通过将 SwipeRefreshLayout(及其依赖项)复制到项目中并更改进度条的显示位置来轻松解决此问题,添加上边距。
为了方便每个人,我发布了一个实现了边距的库。看看这个:https ://github.com/Naroh091/SwipeRefreshLayoutOverlay
希望能帮助到你!
当我将依赖项从 appcompat 19.1.0 升级到 21.0.0 并且没有进行任何代码更改时,我目前遇到了这个问题。
这实际上是 appcompat 21.0.0 中 SwipeRefreshLayout 的一个已知问题。
在此处查找解决方法: https ://code.google.com/p/android/issues/detail?id=77712