背景 最近自家产品开发使用中收到反馈,安卓内嵌网页无法打开PDF,而IOS可以打开。...其实安卓无法打开分以下几种情况:有.pdf后缀但是文档比较小的——可以打开有.pdf后缀但是文档比较大的——无法打开无.pdf后缀的——都打不开原因分析 Android的内置WebView引擎 主要用于显示网页内容和基本的文本渲染...对于不具有.pdf后缀的PDF文件,WebView默认将其视为普通的文本或二进制文件,因此无法直接预览 IOS的WebView使用的是 WebKit引擎 ,该引擎内置了对PDF文件的支持, 可以直接预览和展示...所以IOS的WebView可以打开带有.pdf后缀的文件,并提供内置的PDF查看器,使用户可以直接再应用中查看PDF文件。...解决方案安卓方案使用特定的PDF库:Android上有许多为PDF预览和操作提供支持的 第三方库 ,如Adobe PDF Library和MuPDF等。
原由: 公司WebiVew里新增视频播放,使用Android4.4以上手机打开都没有问题, 但是4.4的手机第一次可以打开,第二次就不行了,不返回网页进度,并报下列错误 [ERROR:in_process_view_renderer.cc
例如需求,我有一个WebView 加载一个url, 该url对应的网页本身自带下拉刷新 ,但是网页本身会有出现400 500 等异常请求错误码 这时候网页加载失败,页面本身的下拉是无法使用的,要求重新加载页面的话就需要在...webview外层套一个android下拉控件(SwipeRefreshLayout) 这样导致下拉一定用的SwipeRefreshLayout的下拉 最终要求是如果页面加载成功的话,用页面本身的下拉,...如果页面加载失败的话,用android下拉控件的下拉 --------------------------------------------------------------------------...------------------------------------------------------------------ 解决办法就是监听加载的url的请求的错误码,对SwipeRefreshLayout.setEnabled...() 来控制是否允许下拉刷新 监听对应6.0+ 6.0以下 分别为两种实现方式: 一、Android 6.0+ 判断请求码 mWebView.setWebViewClient(new
冲突来源于 ScrollView 向下滑动的时候会触发 SwipeRefreshLayout 下拉刷新。...解决思路: 根据ScrollView 滑动距离动态处理SwipeRefreshLayout 刷新。...onScrollChanged(GradationScrollView scrollView, int x, int y, int oldx, int oldy) { //y 滚动的高度...else mSwipeRefreshLayout.setEnabled(false); } }); y是ScrollView 滚动的高度...; import android.util.AttributeSet; import android.widget.ScrollView; /** * 带滑动监听的scrollview */ public
.widget.NestedScrollView SwipeRefreshLayout : 使用名称android.support.v4.widget.SwipeRefreshLayout AppBarLayout...如果仅仅声明scroll,没有声明其它标志,则滚动效果如下图所示: ? 2、enterAlways : 头部与主体先一起滚动,头部滚到位后,主体继续向上或者向下滚。...具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。然后头部固定不动,主体继续向上滚动。 向下滚动:头部固定不动,主体先向下滚动,一直滚到主体全部拉出。然后头部向下展开。...具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。然后头部与主体先一起滚动,头部滚到位后,主体继续向上。 向下滚动:头部与主体先一起滚动,一直滚到头部折叠的最小高度。...然后主体向下滚动,滚到位后头部继续向下展开。 5、snap : 在用户手指松开时,系统自行判断,接下来是全部向上滚到顶,还是全部向下展开。
最近使用WebView加载Url显示页面,因为之前已经使用过很多次这种方式了,打包后在6.0的测试机上测试没什么问题,然后安心的将包给测试,测试大佬的手机系统是Android 9.0的,所以就出现了页面无法加载的情况...要解决这个问题有以下三种方案,也适用于http无法访问网络的问题: 1.将url路径的地址由http改成https,这就需要让后台大佬更改了。...3.既然默认情况下禁用明文支持,那我们就手动设置启动支持明文,这就需要 使用:android:usesCleartextTraffic=“true” | “false” true: 是否使用明文传输...,也就是可以使用http false: android 9.0 默认情况下使用https [4d0its87cy.png] 在这里插入图片描述 那就是添加:android:usesCleartextTraffic...---- 小编整理了一份Android电子书籍,需要的童鞋关注公众号回复:"e_books" 即可获取哦!
---- v4包下SwipeRefreshLayout支持listView,webView,scrollView,recyclerView等 在布局中使用SwipeRefreshLayout将需要下拉刷新的控件包裹...当这些控件滑动到边缘时会触发 SwipeRefreshLayout.onRefresh(); 到此便完成了一次下拉刷新的操作。 使用如下方法改变划出的loading控件颜色。...不要把 emptyView 放在 SwipeRefreshLayout中。....> android.support.v4.widget.SwipeRefreshLayout ...> <ListView .../>...android.support.v4.widget.SwipeRefreshLayout/> <FramLayout
也吸取了现在流行的各种刷新布局的优点,包括谷歌官方的 SwipeRefreshLayout,其他第三方的 TwinklingRefreshLayout 、Ultra-Pull-To-Refresh。...支持所有的 View(AbsListView、RecyclerView、WebView....View)。 支持自定义并且已经集成了很多炫酷的 Header 和 Footer。...支持和 ListView 的无缝同步滚动 和 CoordinatorLayout 的嵌套滚动。 支持自动刷新、自动上拉加载(自动检测列表惯性滚动到底部,而不用手动上拉)。...支持所有可滚动视图的越界回弹。 项目地址: https://gitee.com/scwang90/SmartRefreshLayout 2. 项目名称:基于 Android 的点赞特效 ?...项目简介: 本项目是一个基于 Android 用于显示标签云的组件,其功能如下所示: 设置标签 设置每个标签的配色方案 设置每个标签的x/y速度 设置标签云是否滚动(默认滚动) 设置标签云的item
SwipeRefreshLayout 下拉刷新布局SwipeRefreshLayout是Android又一与时俱进的控件,顾名思义它随着用户手势向下滑动就会触发刷新操作。...setDistanceToTriggerSync : 设置手势向下滑动多少距离才会触发刷新操作。...2、旧版在下拉时,进度条不动,页面会随着向下滑动;而新版在下拉时,页面不再向下滑动,进度圆圈会向下滑动。 这两种显示效果各有千秋,开发者可按照个人喜好决定采用哪种效果。...; import android.os.Bundle; import android.os.Handler; import android.support.v4.widget.SwipeRefreshLayout...; import android.os.Bundle; import android.os.Handler; import android.support.v4.widget.SwipeRefreshLayout
enterAlways: 这个flag让任意向下的滚动都会导致该view变为可见,启用快速“返回模式”。...exitUntilCollapsed: 当视图会在滚动时,它一直滚动到设置的minHeight时完全隐藏。...-- SwipeRefreshLayout是伟大的Google在v4包中给出的下拉刷新组件。...--> android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android..." xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/id_swiperefreshlayout"
="vertical" > <com.utilslibrary.widget.SuperSwipeLayout android:id="@+id/swipeRefreshLayout...android.os.Handler; import android.support.v4.widget.SwipeRefreshLayout; import android.widget.ArrayAdapter...; import android.support.v4.widget.SwipeRefreshLayout; import android.util.AttributeSet; import android.view.Gravity...android.widget.ListView; import android.widget.TextView; import com.utilslibrary.R; /** * 定制SwipeRefreshLayout...== PULL_STATUS_LOADMORE_STOP) { return; } // 当不滚动时
简介 SwipeRefreshLayout是Google官方推出的一款下拉刷新组件,位于v4兼容包下,android.support.v4.widget.SwipeRefreshLayout,Support...使用起来很简单,只要在需要刷新的控件最外层加上SwipeRefreshLayout,其child必须是可滚动的view,如ScrollView、GridView或者ListView,这里就测试最常用的ListView..." tools:context=".MainActivity"> android.support.v4.widget.SwipeRefreshLayout android..." android:layout_height="match_parent"> android.support.v4.widget.SwipeRefreshLayout...知道的告知,感谢~~~ 代码地址 https://github.com/yungfan/SwipeRefreshLayout
在我们的项目中,需要用到许多下拉刷新和上滑加载的操作,不说什么没用的,直接来介绍SwipeRefreshLayout的扩展用法。 后面会简单的介绍SwipeRefreshLayout的用法。...在这里我们对谷歌官方的控件进行拓展,使得SwipeRefreshLayout具有上滑加载更多的功能。...并创建SwipeRefreshLayout的构造方法 public class MySwipeRefreshLayout extends SwipeRefreshLayout { public MySwipeRefreshLayout...> android="http://schemas.android.com/apk/res/android" android:layout_width="...> android="http://schemas.android.com/apk/res/android" android:layout_width="
不罗嗦了,直接上代码,注释都已写好 /** * 继承自SwipeRefreshLayout,从而实现滑动到底部时上拉加载更多的功能. */ public class RefreshLayout extends...childView instanceof ListView) { mListView = (ListView) childView; // 设置滚动监听器给...ListView, 使得滚动的情况下也可以自动加载 mListView.setOnScrollListener(this); Log.d(..." android:layout_weight="8"> <ListView android:id="@+id/lv"...android:layout_width="match_parent" android:layout_height="match_parent" android
SwipeRefreshLayout里边,即可迅速让这个控件支持下拉刷新了; 3.接下来在对应的java代码中处理具体的刷新逻辑: 3.1 实例化SwipeRefreshLayout...> android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_refresh"...android:layout_height="match_parent" /> android.support.v4.widget.SwipeRefreshLayout...> android.support.v4.widget.DrawerLayout> 这里在RecyclerView的外面再嵌套一层SwipeRefreshLayout,让RecyclerView实现下拉刷新功能...重新运行一下程序,在屏幕的主界面向下拖动,会出现下拉刷新的进度条,松手后就会自动进行刷新了,效果如图: ? 刷新中 ? 刷新后 下拉刷新进度条会停留两秒钟,随后自动消失,水果列表也会更新了。
实际项目中,后台肯定的接口肯定都是分页的,那么,分页加载也是自然而然的事,下面基于Google原生的下拉刷新控件SwipeRefreshLayout,实现上拉加载更多的功能。...; import android.support.v4.widget.SwipeRefreshLayout; import android.util.AttributeSet; import android.view.LayoutInflater...instanceof ListView) { mListView = (ListView) childView; // 设置滚动监听器给...ListView, 使得滚动的情况下也可以自动加载 mListView.setOnScrollListener(this); }...; import android.support.annotation.Nullable; import android.support.v4.widget.SwipeRefreshLayout; import
的那个库,这个库牛逼到要死,支持ListView、ExpandableListView、GridView、WebView、ScrollView、HorizontalScrollView、ViewPager...最终知道是用 chrisbanes/ActionBar-PullToRefresh 的库可以实现那种效果,又去学了,啊哈哈,然而过些日子也没见人用了,啊哈哈哈 (4)这时候google也有自己的下拉控件SwipeRefreshLayout...android 5.0之后效果是个加载圆圈,还可以接受了,现在很多应用都用这个 (5)这时又看到了 baoyongzhang/android-PullRefreshLayout ,This component...like SwipeRefreshLayout, it is more beautiful than SwipeRefreshLayout.就是比google的跟漂亮。...(18) Android-MaterialRefreshLayout 是我最近写的, it is more beautiful and powerful than SwipeRefreshLayout
一、错误记录 ---- 报错信息 : 网页无法打开 位于 http://… 的网页无法加载, 因为 net::ERR_CLEARTEXT_NOT_PERMITTED ; 二、解决方案 ---- 在...Android 9.0 及以上的系统版本中,系统默认情况下禁止应用程序使用不安全的明文流量进行网络连接,以提高用户的安全性。...这意味着,如果应用程序尝试连接到一个不安全的 HTTP 网站,将收到 net::ERR_CLEARTEXT_NOT_PERMITTED 错误 ; 也就是说应用中的 WebView 尝试显示 HTTP 站点时就会报...net::ERR_CLEARTEXT_NOT_PERMITTED 错误 ; 解决方案一 在 AndroidManifest.xml 清单文件中的 application 节点配置 android:usesCleartextTraffic...="true" 属性 , 允许应用程序使用明文流量进行网络连接,该操作会降低应用程序的安全性 ; <application android:usesCleartextTraffic="true
1.SwipeRefreshLayout使用注意说明 ㈠SwipeRefreshLayout默认只能包含一个滑动控件,比如本文使用的RecyclerView。...㈢如果你按㈡这样做,那么SwipeRefreshLayout默认只会监听一个滑动控件,当你有多个控件的时候会使其找不到监听的滑动控件。这样SwipeRefreshLayout功能就不复存在了。...答案就是重写SwipeRefreshLayout。...> android="http://schemas.android.com/apk/res/android" android:layout_width="..., "没有数据得先下拉刷新", Snackbar.LENGTH_SHORT).show(); return; } //滚动事件结束并且到达最底端
当然了,这个是我完成任务之后又写的一个demo,大家可能会想到这里用的是谷歌极力推荐我们使用的一个全新的设计语言——Material Design,然后再配上谷歌的下拉刷新控件SwipeRefreshLayout....widget.SwipeRefreshLayout> android.support.design.widget.CoordinatorLayout> android.support.design.widget.AppBarLayout...> android.support.design.widget.CoordinatorLayout> android.support.v4.widget.SwipeRefreshLayout...中的内容拉到正常状态再进行刷新,详细解决方案请参考 CoordinatorLayout AppBarLayout 结合下拉刷新 上拉加载更多 的滑动冲突解决 也就是说我们需要监听appbarlayout的滚动...(true); } else { swipeRefreshLayout.setEnabled(false); } } }); 这样我们就不用担心还没有将