我对Android很新,我正在谷歌网站上探索示例代码。我目前使用的代码是SwipeRefreshLayout:http://developer.android.com/samples/SwipeRefreshLayoutBasic/index.html
在代码中,我们看到正在为列表视图执行SwipeRefreshLayout,换句话说,如果您向下拖动列表视图,则会触发该方法并且listview会自行刷新。
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
让我感到困惑的是,当您向下拖动时,进度动画栏的代码中没有布局显示在列表视图的顶部。你认为SwipeRefreshLayout在你向下拖动时自动生成一个进度动画条而不需要用户在xml中为它指定任何布局吗?
例如,如果想要在进度动画栏的两端放置填充,以便在刷新时动画不会触摸屏幕的两端,那么会怎么做?
https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html并没有真正说出任何事情。
答案 0 :(得分:24)
您无法更改动画。
在SwipeRefreshLayout
中,您无法自定义;我相信这是Google试图让开发人员坚持常见模式的尝试。您可以设置样式的是动画的四种颜色,使用setColorScheme()
指定。
SwipeRefreshLayout
会为您显示其预定义动画。这可能是canChildScrollUp()
返回false并且用户“下拉”或者设置setRefreshing(true)
时。使用setRefreshing(false)
关闭动画。将您的逻辑放在侦听器的方法onRefreshing()
中。如果您在canChildScrollUp()
中放置了不是ListView
的内容,请覆盖SwipeRefreshLayout
。你应该好好离开这里。
答案 1 :(得分:11)
虽然您无法更改它,但您仍然可以隐藏它,然后在触发后显示您自己的: - )
SwipeRefreshLayout swiperefresh = (SwipeRefreshLayout)root.findViewById(R.id.swiperefresh);
swiperefresh.setOnRefreshListener(this);
swiperefresh.setColorSchemeColors(0,0,0,0);
swiperefresh.setProgressBackgroundColor(android.R.color.transparent);
注意:
在eclipse中你必须添加@SuppressLint(“ResourceAsColor”)来编译它。
您仍然需要在适当的时间点调用setRefreshing(false),否则onRefresh不会再次触发。