1

请告诉我,我怎样才能像这样制作swipeRefreshLayout

在此处输入图像描述

我的 swipeRefreshLayout 看起来像 在此处输入图像描述

我希望它看起来像一条线,而不是一个圆圈

布局:

<android.support.v4.widget.SwipeRefreshLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/swipeRefreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        <LinearLayout
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
            <ListView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:id="@+id/listView"/>
        </LinearLayout>
    </android.support.v4.widget.SwipeRefreshLayout>

代码:

swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
    swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() { }
    });
    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);

我使用 appcompat 库,ActionBarActivity

4

2 回答 2

3

您必须使用v4 Support Library之前的版本revision 21。在此版本中更改了样式。如果您使用的是 gradle,请使用以下内容:

compile 'com.android.support:support-v4:20.x.x'

x具体版本号在哪里。

于 2015-01-07T19:28:31.020 回答
0

您有 2 个选项可以返回旧的 SwipeRefreshLayout:

1.正如史蒂夫所说,使用修订版 21 之前的 v4 支持库。我想它应该是 v4 支持库 r20。你可以从谷歌的网站下载它,从你的旧项目中获取,或者在 build.gradle 依赖项中使用正确的版本,比如

 compile 'com.android.support:support-v4:20.0.0'

但在这种情况下,您将使用旧库,这在未来可能会出现问题。因为还有很多其他课程可能会有所帮助。

2.获取 SwipeRefreshLayout 的源代码并放到你的项目中。这也不是完美的解决方案,但 Google 员工让我们别无选择。所以下一步应该是:
A.从https://dl-ssl.google.com/android/repository/support_r20.zip下载 v4 支持库修订版 20 的源代码并解压缩。
B.在您的项目中创建一些子包,例如 com.yourpackagename.supportv4r20,并将下一个文件复制到其中:
BakedBezierInterpolator.java
SwipeProgressBar.java
SwipeRefreshLayout.java
该文件位于 ../support/v4/src/java/android/support/v4/widget/ 目录中。
C.修复 SwipeProgressBar 中的代码以使用 SwipeProgressBar 和 SwipeRefreshLayout 中的代码以使用 SwipeProgressBar 。您必须删除“import android.support.v4.widget*”并更改代码以使用包中的本地类(来自 com.yourpackagename.supportv4r20)。这些类中不应该有任何其他错误。
D.现在更改布局文件以使用包中的 SwipeRefreshLayout,例如

  <com.yourpackagename.supportv4r20.SwipeRefreshLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/swipe_container"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
....
</com.yourpackagename.supportv4r20.SwipeRefreshLayout>

它现在应该可以工作了。您也可以使用最新版本的 v4 支持库。

还有一个重要的注意事项。 从我们的包中,SwipeRefreshLayout 中的 v4 支持库仍然有一些关系,它们是 android.support.v4.view.MotionEventCompat 和 android.support.v4.view.ViewCompat。我没有更改代码并仍在使用它们。我检查了这个类的代码,我想我们可以“按原样”使用它。但是,如果您将来在使用 SwipeRefreshLayout 时遇到问题,那么您必须像我们对 SwipeRefreshLayout / SwipeProgressBar / SwipeProgressBar 所做的那样,从 v4 支持库 r20 源中复制所有这些文件并修复所有依赖项。

干杯!

于 2015-04-08T14:53:25.833 回答