问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

swiperefreshlayout v4 没有

发布网友 发布时间:2022-05-01 21:17

我来回答

2个回答

热心网友 时间:2022-04-27 01:31

哪可能是你没有更新。。

请打开SDK manager,把所有都取消选中,找到最下面的Extras里面的带library(android support library)项,更新这个。更新完之后创建新的项目,如果你的API低于19,创建项目选择4.4.2,这个项目里就含有你要的swiperefreshlayout了。

原来的项目没有怎么办?把原来的V4删掉,把新拷进去就可以了。

附渣图

热心网友 时间:2022-04-27 02:49

博客 – 伯乐在线
首页最新文章在线课程业界开发 IT技术 设计 创业IT职场投稿更多 »
伯乐在线 > 首页 > 所有文章 > Android > Android SwipeRefreshLayout教程
Android SwipeRefreshLayout教程
2014/06/19 | 分类: Android, 开发 | | 标签: 安卓开发, 教程
分享到: 9
Gopher China 2015 上海大会
shell条件判断与流程控制
Android必学-异步加载
与《YII框架》不得不说的故事—基础篇
本文由 伯乐在线 - alice 翻译。未经伯乐在线许可,禁止转载!
英文出处:javacodegeeks。欢迎加入翻译小组。
在这篇文章中,我们将介绍SwipeRefreshLayout组件。这个组件被使用时用户可以使用扫动手势刷新UI。在以前的文章中,我们谈到了另一种方法来刷新,我们叫摇晃刷新界面,在这里用户摇晃智能手机,使用加速度传感器的应用程序刷新用户界面。我们在这篇文章中,主要介绍自定义实现此刷新模式。

SwipeRefreshLayout组件是由SDK提供,已经被用于一些Android自己的应用程序(比如Gmail)的实现。

简介

SwipeRefreshLayout组件只接受一个子组件:即需要刷新的那个组件。它使用一个侦听机制来通知拥有该组件的*有刷新事件发生,换句话说我们的Activity必须实现通知的接口。该Activity负责处理事件刷新和刷新相应的视图。一旦监听者接收到该事件,就决定了刷新过程中应处理的地方。如果要展示一个“刷新动画”,它必须调用setRefrshing(true),否则取消动画就调用setRefreshing(false)。

怎样使用SwipeRefreshLayout

现在我们知道这组件如何工作的,我们将创建一个简单的例子来说明如何使用。假设用户通过使用一个垂直滑动手势来产生一个随机数:

android_swipetorefreshlayout5

通常来说这是根组件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:id="@+id/swipe">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Random number:"
android:id="@+id/lbl"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rndNum"
android:layout_toRightOf="@id/lbl"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/lbl"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="Swipe to Refresh"
style="@android:style/TextAppearance.Medium"/>

</RelativeLayout>
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
从上面布局来看,SwipeRefreshLayout只有一个子组件。现在我们来编写Activity:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SwipeRefreshLayout swipeView = (SwipeRefreshLayout) findViewById(R.id.swipe);
final TextView rndNum = (TextView) findViewById(R.id.rndNum);
swipeView.setColorScheme(android.R.color.holo_blue_dark, android.R.color.holo_blue_light, android.R.color.holo_green_light, android.R.color.holo_green_light);
swipeView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
swipeView.setRefreshing(true);
Log.d("Swipe", "Refreshing Number");
( new Handler()).postDelayed(new Runnable() {
@Override
public void run() {
swipeView.setRefreshing(false);
double f = Math.random();
rndNum.setText(String.valueOf(f));
}
}, 3000);
}
});
}
正如你在示例中所看到的,事件发生在onCreate方法。在第6行,我们得到SwipeRefreshLayout引用,这样我们就可以设置*(10、11、12行)。在监听者这边,我们通过设置setRefreshing(true)动开启刷新画,然后生成随机数。在结束的时候(这里模拟了一个相当漫长的过程)停止动画。

在ListView上使用SwipeRefreshLayout

另一个有趣的例子是在ListView中如何使用SwipeRefreshLayout。这是一个有趣的例子,因为在真正的应用程序中,我们经常会遇到这种情况。我们有一些带ListView的项目,希望对它们刷新。如果ListView是SwipeRefreshLayout唯一的孩子,不会出现任何问题,一切都会运行正常。在某些情况下,不仅有ListView可能还有其他的元素。假设有这样一个界面:

android_swipetorefreshlayout_listview4

这种情况有些复杂,如果我们向上滚动在ListView中项目,一切都如预期那样显示。但如果向下滚动,刷新过程开始列表项并不滚动。在这种情况下,我们可以使用一个小技巧,可以通过setEnabled(false)禁止使用刷新通知,当Listview中第一个项可见时而再启用它:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SwipeRefreshLayout swipeView = (SwipeRefreshLayout) findViewById(R.id.swipe);

swipeView.setEnabled(false);
ListView lView = (ListView) findViewById(R.id.list);
ArrayAdapter adp = new ArrayAdapter(this, android.R.layout.simple_list_item_1, createItems(40,0 ));
lView.setAdapter(adp);

swipeView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
swipeView.setRefreshing(true);
( new Handler()).postDelayed(new Runnable() {
@Override
public void run() {
swipeView.setRefreshing(false);

}
}, 3000);
}
});

lView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {

}

@Override
public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (firstVisibleItem == 0)
swipeView.setEnabled(true);
else
swipeView.setEnabled(false);
}
});
}
正如第33行public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount)看到的,我们重写了ListView中的onScrollListener去处理启用/禁用机制。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
路由器网线一米多少钱 东芝电视怎么投屏安卓手机 东芝电视怎么投屏 东芝电视投屏功能在哪里 指甲根部半月白 ...在指甲中部黑线长起 还有就是月牙上有白色一块 都在同一个指_百度... 我农业银行五年定期无密码存款,身份证没了,仅凭身份证复印件和存款单... 混凝土强度回弹怎么测算推定值,是否满足要求?一篇文章讲明白_百度知 ... 发动机舱有胶皮味跟安装防盗器有关系吗 cb400f启动后有股胶皮味道 一个袋子装了半袋米,倒出三分之一多1千克后还剩19千克... 求助,sprint layout 6.0 怎么添加一个钻孔 有没有画电路图的软件,简单好用的 Sprint-Layout 6.0 绿色汉化版 这个软件电脑怎么下载和打开啊?我以前下载了不会打开,是不是要解压啊? 用Sprint-Layout5.0画了pcb图,到工厂加工一直说没有外形试为什么啊? 用sprint-layout5.0画双面pcb板,面和底层(C1&#47;C2)覆铜层的电气连接过孔怎样画啊?用什么表示电器过孔? Sprint-Layout 5.0可以跟据电路图自动生成PCB吗? 儿子刚刚下载了SPRINT-LAYOUT软件,想用它画一个小的电路图后能够在家里用元件真正实现它,请各位多指教。 江忍怎么表白的 为什么说江忍是首选? 想问一下江忍是谁? 江忍为什么爱了孟听两辈子 江忍服从判决是什么意思 浮岛物语混沌终结者如何获取 浮岛物语如何获得黑曜石 浮岛物语黑曜石怎么得? 浮岛物语沉没的安卡怎么获得? 找一个游戏,rogulike单机地牢游戏,好久之前的游戏了,结算后开灵魂结晶可以解锁和升级装备图纸? 浮岛物语巨型头骨在哪里合成- 问一问 浮岛物语灵魂结晶点哪个技能 IE安全证书错误怎么办 Google发布flexbox-layout 能替代FlowLayout吗 有谁在用Sprint-Layout6.0画PCB么?外型层应该怎么画 sprint layout sprint-layout6.0怎么输出gerber文件 做慕斯没有奶油只有黄油可以用什么代替? 佳能IP7280 IP7200提示5B00,废墨满了,如何解决? 如何将电脑编辑的问卷星转换成手机版 我的佳能打印机显示5B00.怎样清零? 问卷星不同的手机扫描二维码答题题目一样吗? 老人娱乐项目有哪些 有什么电子产品是专门为老年人设计的?也可以给爸爸妈妈当礼物送的 老年人都要用的是什么东西 老年人有哪些娱乐方式? 耳朵洞口不碰不疼,一碰就疼是怎么回事 耳朵洞口不碰不疼,一碰就疼是怎么回事? 华为手机最新版本的陌陌信息铃声怎么设置? 耳朵里面的那个洞口处凸出了块肉按上去有点痛,硬 的是怎么回事啊 耳朵洞口长了个包一按就老痛了,不按就不痛!怎么办?!它还会长麻? 耳朵洞口一圈痛是怎么回事 已经几天了 一摸就特别痛 耳朵洞口那里有点痛,是什么原因呢?吃点什么药物好呢?