SwipeRefreshLayout 指示器没有加载圆形箭头

问题描述 投票:0回答:4

我在 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() 最初不显示指示器中的每个解决方案,但没有任何效果。 谁能帮我解决这个问题吗?

android swiperefreshlayout
4个回答
1
投票

问题是 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
);

0
投票

试试这个:

<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>

0
投票

我认为你的强调色是白色,并且圆圈背景也是白色,为什么不可见,尝试从 value/color.xml 文件的文件夹中更改它。有 ColourAccent 改变它。应该可以。!


0
投票

我也有同样的问题。事实证明,“加载”花费的时间太短,因此圆形进度条没有时间进行动画处理。

确保您的后台操作至少需要一秒钟的时间进行测试,例如通过在后台线程中的某个位置添加人工

Thread.sleep(1000);
,或在协程
delay(1000)
函数中添加
suspend

© www.soinside.com 2019 - 2024. All rights reserved.