我在 Activity 内的 Fragment 中使用 SwipeRefreshLayout。当我向下滑动时它工作正常,但是当第一次片段创建和加载数据时。它只有一个空白圆圈,没有动画加载箭头,如下所示:
我的代码显示 SwipeRefreshLayout :
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.item_order_fragment, container, false);
ButterKnife.bind(this, v);
mSwipeRefreshLayout.setOnRefreshListener(this);
mSwipeRefreshLayout.setColorSchemeResources(R.color.startColorPrimary,
R.color.color_tab_selected,
R.color.endColorPrimary);
mSwipeRefreshLayout.setRefreshing(true);
return v;
}
@Override
public void onRefresh() {
// Fetching data from server
}
我的 xml 布局:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/tv_order_status_explain"
android:background="@android:color/transparent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_orders"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
tools:listitem="@layout/item_customer_order" />
</android.support.v4.widget.SwipeRefreshLayout>
我已经尝试了此 SwipeRefreshLayout setRefreshing() 最初不显示指示器中的每个解决方案,但没有任何效果。 谁能帮我解决这个问题吗?
问题是 setColorSchemeColors() 需要颜色整数作为输入,例如 Color.BLUE,而不是颜色资源 ID。
所以要显示箭头的颜色代码应该是这样的:
swipeRefreshLayout.setColorSchemeColors(Color.BLACK,
Color.BLUE,
Color.GREEN,
Color.GRAY
);
设置颜色资源 ID 的代码应如下所示:
swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
android.R.color.holo_green_light,
android.R.color.holo_orange_light,
android.R.color.holo_red_light
);
试试这个:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tv_order_status_explain">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_orders"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
tools:listitem="@layout/item_customer_order" />
</android.support.v4.widget.SwipeRefreshLayout>
并在 Java 类中执行此操作:
mSwipeRefreshLayout.setColorSchemeResources(R.color.orange, R.color.green, R.color.blue);
mSwipeRefreshLayout.setOnRefreshListener(this);
并在 color.xml 中执行此操作:
<color name="orange">#FF9900</color>
<color name="green">#009900</color>
<color name="blue">#000099</color>
我认为你的强调色是白色,并且圆圈背景也是白色,为什么不可见,尝试从 value/color.xml 文件的文件夹中更改它。有 ColourAccent 改变它。应该可以。!
我也有同样的问题。事实证明,“加载”花费的时间太短,因此圆形进度条没有时间进行动画处理。
确保您的后台操作至少需要一秒钟的时间进行测试,例如通过在后台线程中的某个位置添加人工
Thread.sleep(1000);
,或在协程 delay(1000)
函数中添加 suspend
。