首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何添加在WebView无法返回时隐藏的后退按钮

在WebView中,当无法返回上一页时隐藏后退按钮的方法是通过监听WebView的历史记录来判断是否可以返回上一页,然后根据返回结果来控制后退按钮的显示与隐藏。

以下是实现该功能的步骤:

  1. 在布局文件中添加一个WebView和一个后退按钮。
代码语言:txt
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <Button
        android:id="@+id/backButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="后退"
        android:visibility="gone" />

</RelativeLayout>
  1. 在Activity中获取WebView实例,并设置WebView的WebChromeClient和WebViewClient。
代码语言:txt
复制
WebView webView = findViewById(R.id.webView);
Button backButton = findViewById(R.id.backButton);

webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
  1. 在WebViewClient的shouldOverrideUrlLoading方法中判断是否可以返回上一页,并根据结果控制后退按钮的显示与隐藏。
代码语言:txt
复制
webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (view.canGoBack()) {
            backButton.setVisibility(View.VISIBLE);
        } else {
            backButton.setVisibility(View.GONE);
        }
        return false;
    }
});
  1. 设置后退按钮的点击事件,点击按钮时调用WebView的goBack方法返回上一页。
代码语言:txt
复制
backButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        webView.goBack();
    }
});

通过以上步骤,当WebView可以返回上一页时,后退按钮会显示出来,点击后退按钮可以返回上一页;当WebView无法返回上一页时,后退按钮会隐藏起来。

推荐的腾讯云相关产品:腾讯云移动浏览器(Tencent X5),它是一款基于腾讯浏览服务(TBS)内核的移动浏览器,具有更好的兼容性和性能优势。您可以通过以下链接了解更多信息:腾讯云移动浏览器

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

win10 UWP 标题栏后退

本文告诉大家如何在 UWP 标题栏添加后退按钮 设置里,标题栏有后退按钮,请看下图 ?...在win平板,可以有后退键,手机也有,但是手机是物理,平板和 PC 后退是在标题栏做 如果需要在标题栏显示后退按钮,需要使用下面代码 Windows.UI.Core.SystemNavigationManager.GetForCurrentView...可以通过 BackRequested 参数 handle 阻止在手机按下后退键让应用隐藏。...BackRequested 后退方法,如何获得参见:c# 设计模式 责任链.md 注意不要在每个页面的构造都使用添加事件,如果这样子,那么就会出现按一下后退出现你想不到异常。...如果是手机可以通过引用手机 sdk 使用下面的代码拿到硬件按钮返回 Windows.Phone.UI.Input.HardwareButtons.BackPressed 具体代码请看 Windows-universal-samples

81120

Android开发必知--WebView加载html5实现炫酷引导页面

onKeyDown(int keyCode, KeyEvent event) { 18 //重写onKeyDown,当浏览网页,WebView可以后退执行后退操作。...至于该WebView如何发送请求,如何解析服务器,这些细节对我们来说是完全透明,我们不需要关心。   ...另外需要一提是,当使用WebView浏览网页,不做处理的话,按下手机返回键会直接结束WebView所在Activity,通过重写onKeyDown()方法,当WebView可以返回,让其执行返回操作...代码很可能会出现乱码现象。...相信不用我解释大家就能看懂,最左边是第一张页面,中间是过度动画效果,最右边是最后一张,其中在最后一张上面有个按钮,捕捉到这个按钮跳转链接是关键。

3.3K100
  • WKWebView

    要允许用户在Web历史页面中前进或者后退,要为按钮设置goBack或者goForward动作。当用户不能在某个方向上再移动,使用canGoBack或者canGoForward来禁用按钮。...网页视图后退列表,即之前访问过web页面的列表。 canGoBack。布尔值,指示后退列表中是否有可被导航到后退项。 canGoForward。布尔值,指示后退列表中是否有可被导航到前进项。...WKWebViewConfiguration仅在首次初始化WebView视图时候使用,当WebView视图被创建以后,你就无法再使用此类来更改WebView配置信息了。...*)error { } //web内容开始返回时调用 - (void)webView:(WKWebView *)webView didCommitNavigation:(null_unspecified...当使用 Https 协议加载web内容,使用证书不合法或者证书过期需要使用该方法. - (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge

    6K20

    WebView深度学习(一)之WebView基本使用以及Android和js交互

    webView.onPause(); //当应用程序(存在webview)被切换到后台,这个方法不仅仅针对当前webview而是全局全应用程序webview //它会暂停所有webviewlayout...就必须销毁Webview //但是注意:webview调用destory,webview仍绑定在Activity上 //这是由于自定义webview构建传入了该Activitycontext对象...后退网页 //是否可以后退 Webview.canGoBack() //后退网页 Webview.goBack() //是否可以前进 Webview.canGoForward...() //前进网页 Webview.goForward() //以当前index为起始点前进或者后退到历史记录中指定steps //如果steps为负数则为后退,正数则为前进 Webview.goBackOrForward...} }); } (3)两种方法对比 调用方式 优点 缺点 使用场景 调用loadUrl() 方便简洁 效率低,获取返回值麻烦 不需要获取返回值,对性能要求较低 调用

    6K31

    WKWebView详解

    后退 - (WKNavigation *)goBack; 即在前进后退列表中导航到上一个记录 返回一个新WKNavigation对象 如果没有记录可以后退,则返回nil 前进 - (WKNavigation...*)goForward; 即在前进后退列表中导航到下一个记录 返回一个新WKNavigation对象 如果没有记录可以前进,则返回nil 前进/后退到一个指定记录上 - (WKNavigation...选择此值将自动包含添加到这个常量任何新检测类型 WKURLSchemeHandler 用来处理WebKit无法处理URL Scheme类型资源 开始加载特定资源时调用 - (void)webView...返回nil则使用默认预览表现 如果返回一个视图控制器则预览会显示这个视图控制器,并且在用户触发pop操作(继续按压)触发webView:commitPreviewingViewController:...调用 如果要使用默认预览操作,应用程序必须在返回视图控制器previewActionItems实现中运行这些操作 iOS 10.0+预览用户触发pop操作(继续按压)时调用 - (void)webView

    20.5K193

    笔记64 | 个人项目“易来”开发记录《二》处理Fragment中返回问题

    需求描述 问题: 一个WebView放在Fragment中,我们都知道webView有一个goBack()方法,可以通过该方法对网页进行后退处理,由于Fragment本身并没有监听onBackPressed...方法,又处于一个Activity中,Activity除又对后退进行了3秒确定退出处理,所有导致 Fragment中WebView无法进行goBack(); 需求: 需要在Fragment中监听到返回键...,当WebView可以后退网页时候,进行后退网页,当没有可后退网页(首页状态),点击返回调Activity中onBackPressed方法; 处理方案 这位大神方案大神讲得通俗易懂,对我来说难度稍大...this.framelayout3 = backHandledFragment; } } Fragment: public boolean onBackPressed() { if (webView.canGoBack...()) { webView.goBack(); return true; }else{ return false;

    55280

    史上最全webview详解

    方法 前进、后退 goBack () //后退 goForward ()//前进 goBackOrForward (int steps) //以当前index为起始点前进或者后退到历史记录中指定...但是注意: webview调用destory,webview仍绑定在Activity上.这是由于自定义webview构建传入了该Activitycontext对象,因此需要先从父容器中移除webview...getHeight()或者getBottom() //方法都返回当前WebView 这个容器高度 getContentHeight() 返回是整个html 高度,但并不等同于当前整个页面的高度,...getHeight()或者getBottom() //方法都返回当前WebView 这个容器高度 getContentHeight() 返回是整个html 高度,但并不等同于当前整个页面的高度,...getHeight()或者getBottom() //方法都返回当前WebView 这个容器高度 getContentHeight() 返回是整个html 高度,但并不等同于当前整个页面的高度,

    6.6K90

    H5 手机 App 开发入门:概念篇

    不能从手机首屏直接进入。 缺乏手机状态栏和锁屏通知推送能力。 不支持脱机访问(即断网也能使用)。 ?...可以理解成,混合 App 里面隐藏了一个浏览器,用户看到实际上是这个隐藏浏览器渲染出来网页。 ?...混合 App 原生外壳称为"容器",内部隐藏浏览器,通常使用系统提供网页渲染控件(即 WebView 控件),也可以自己内置一个浏览器内核。...另一个缺点是,由于页面跨平台,就无法使用只有特定平台提供功能,导致体验不如纯原生 App。举例来说,早期时候,安卓有物理后退按钮,iPhone 没有,页面设计不得不考虑这一点。 ?...上面是安卓页面,左上角后退按钮,跟系统后退按钮重复了。 4.5 小程序 最后,再来谈谈微信小程序。 ? 所谓小程序,可以看作是针对特定容器 H5 开发。

    2K51

    Carson带你学Android:最全面的Webview使用详解

    就必须销毁Webview //但是注意:webview调用destory,webview仍绑定在Activity上 //这是由于自定义webview构建传入了该Activitycontext对象...() //前进网页 Webview.goForward() //以当前index为起始点前进或者后退到历史记录中指定steps //如果steps为负数则为后退,正数则为前进 Webview.goBackOrForward...(intsteps) 常见用法:Back键控制网页后退 问题:在不做任何处理前提下 ,浏览网页时点击系统“Back”键,整个 Browser 会调用 finish()而结束自身 目标:点击返回后,是网页回退而不是推出浏览器...App里面使用webview控件时候遇到了诸如404这类错误时候,若也显示浏览器里面的那种错误提示页面就显得很丑陋了,那么这个时候我们app就需要加载一个本地错误提示页面,即webview如何加载一个本地页面...与JS交互方式 最全面汇总 3.4 注意事项:如何避免WebView内存泄露?

    1.6K40

    History API与浏览器历史堆栈管理

    最后保证在商品34图片详情页或评论页可以顺利后退至最初商品列表页。 上文中加粗后退”,意味着使用浏览器后退按钮,或者使用手机自带返回,再或者使用页面上提供后退按钮。...尽管无法访问当前页历史记录栈,但是浏览器却提供了history.length属性,它标明了当前历史记录栈个数。该值会帮助我们更好地分析History API对历史记录栈影响。 ?...虽然这里仅仅列出了这一个测试用例,但是其实笔者做了更多更复杂测试,并且平台涉及了pc和移动端浏览器、微信和原生webview,结果都一样。...掌握这个规律,就知道如何维护历史记录,就知道在什么状态下需要pushState。回到最初需求,产品经理规定从商品34评论页,按后退按钮可以到达最初列表页,但是他并没有详细规定如何后退。...== -1){ ajaxPic(e.state,true); }else // 后退(前进)至列表页,隐藏浮层 if(e.state && e.state.indexOf

    2.8K50

    iOS 11 更大导航 (官方翻译版)

    导航栏 导航栏出现在应用程序屏幕顶部状态栏下方,并可以通过一系列分层屏幕进行导航。当显示新屏幕,通常标有前一屏幕标题后退按钮出现在栏左侧。...导航栏是半透明,可能具有背景色调,并且可以配置为在屏幕上键入屏幕隐藏,发生手势或视图调整大小。 ? 考虑在显示全屏内容暂时隐藏导航栏。当您想关注内容,导航栏可能会分散注意力。...如果用自定义图像替换系统提供返回按钮人字纹,也可以提供自定义遮罩图像。iOS在使用此遮罩,可以在转换期间为按钮标题设置动画。 不要包含多段面包屑路径。...后退按钮总是执行单个操作 - 返回到上一个屏幕。如果您认为在没有当前屏幕完整路径情况下,人们可能会迷失方向,请考虑对应用程序层次结构进行展平。 给文本标题按钮足够空间。...如果您导航栏包含多个文本按钮,那些按钮文本可能会一起运行,使按钮无法区分。通过在按钮之间插入固定空间项来添加分隔。

    2.9K30

    万物可视之智能可视化管理平台

    WebView:可以将页面嵌入到3D场景中。 2D 界面 原生界面:用户可以使用js代码编写原生界面,将dom元素插入到相应节点中。 快捷界面库:内置各种组件模块,供用户进行拼接组装使用。...如果设置 true,表示保持大小,不随距离近大远小,此时 size 单位是屏幕像素点; offset : 设置自身坐标系下偏移量为[0, 2, 0]; size : 设置 Marker 物体大小,也可以单独数字如...会改变标记上数字: 查看示例 WebView 物体 我们可以使用 WebView 物体,将其他网站或者页面的内容嵌到 3D 中。...panel 也会被删除 显示和隐藏UIAnchor方法为: uiAnchor.visible = true / false; 通过 js 编写界面: 可以利用 UIAnchor 连接到 3D 物体上...noline ,折线角标 polyline ;依次见下图: 注意事项: 角标样式都不区分大小写 如果 panel 面板设置了关闭按钮 则点击关闭按钮 会将面板设置为隐藏,如需再次打开该面板 则调用

    1.4K61

    Android:最全面的 Webview 详解

    那么这种该如何实现呢?其实这是Android里一个叫WebView组件实现。今天我将全面介绍WebView常用用法。 ---- 目录 ? ---- 1....就必须销毁Webview //但是注意:webview调用destory,webview仍绑定在Activity上 //这是由于自定义webview构建传入了该Activitycontext对象...() //前进网页 Webview.goForward() //以当前index为起始点前进或者后退到历史记录中指定steps //如果steps为负数则为后退,正数则为前进 Webview.goBackOrForward...(intsteps) 常见用法:Back键控制网页后退 问题:在不做任何处理前提下 ,浏览网页时点击系统“Back”键,整个 Browser 会调用 finish()而结束自身 目标:点击返回后,是网页回退而不是推出浏览器...与JS交互方式 最全面汇总 3.4 注意事项:如何避免WebView内存泄露?

    3.5K20

    这是一份Android全面&详细-Webview使用攻略

    就必须销毁Webview //但是注意:webview调用destory,webview仍绑定在Activity上 //这是由于自定义webview构建传入了该Activitycontext对象...() //前进网页 Webview.goForward() //以当前index为起始点前进或者后退到历史记录中指定steps //如果steps为负数则为后退,正数则为前进 Webview.goBackOrForward...(intsteps) 常见用法:Back键控制网页后退 问题:在不做任何处理前提下 ,浏览网页时点击系统“Back”键,整个 Browser 会调用 finish()而结束自身 目标:点击返回后,是网页回退而不是推出浏览器...:判断点击确认还是取消 // true表示点击了确认;false表示点击了取消; return true; } 常见方法5: onJsPrompt() 作用:支持javascript输入框 点击确认返回输入框中值...与JavaScript交互 3.4 注意事项:如何避免WebView内存泄露?

    4.2K20

    大前端开发中路由管理之三:Android篇

    当页面返回,会返回并使用打开该Activity之前任务栈A,按照先进后出顺序跳转进任务栈A栈顶Activity。         ...可以看到,不同启动模式会影响Activity返回页面跳转行为,一些模式下会对任务栈及其内Activity顺序产生改变,开发过程中需要根据不同场景选择不同模式,同时充分考虑其产生返回页面跳转行为影响...需要关注是,当由Activity跳转进入WebView,伴随着从Activity任务栈进入H5任务栈,如果我们希望接下来在H5内做页面前进或后退页面跳转,如按下返回键后不返回Activity任务栈,而是实现...WebView任务栈后退,则需要根据WebView提供一些判断网页是否可以前进后退api,拦截对于返回监听以实现。...// WebView提供apiWebview.canGoBack //判断是否可以后退Webview.goBack //后退网页Webview.canGoForward //判断是否可以前进Webview.goForward

    3.2K11

    WebView使用及实战

    怎样配置缓存 - webView请求错误时候处理 - webView cookie同步与清除 - webView 下载文件两种方法 - webView 一些扩展使用 思路图如下...,如微信,按下返回键,只是想后退,并不是想销毁Activity,我们可以这样做,重写 Activity onKeyDown()方法 ,并监听按下键,采取 相应 操作。...showWifiDlg(NewsDetailActivity.this); } else { if (errorCode == 404) { //用javascript隐藏系统定义...加载url之前,否则WebView无法获得相应cookie,也就无法通过验证。...不过本人建议是先掌握常用 就OK了,以后其他需要用到再去学就好了 ---- 关于如何监听网络简化及处理 ,有兴趣可以阅读我这一篇博客android 监听网络状态变化及实战 文章首发地址CSDN

    88910

    Human Interface Guidelines —— 导航栏(Navigation Bars)

    内容 当显示一个新屏幕,一个后退按钮(通常标有前一个屏幕标题)出现在该bar左侧。...·显示全屏内容可考虑暂时隐藏navigation bars。 当您想要聚焦内容,navigation bar可能会分散注意力。 暂时隐藏navigation bar以提供更加身临其境体验。...人们知道标准后退按钮可以让他们通过层级信息返回。但是,如果您实现了自定义后退按钮,请确保它仍然看起来像后退按钮,直观,与剩下页面交互方式保持匹配,并始终贯穿于您应用程序中。...后退按钮总是执行一个动作——返回到前一个屏幕。如果您认为没有到达当前屏幕完整路径,人们可能会迷路,那么请考虑展开app层次结构(如使用segmented control)。...·给文本标题按钮足够空间。如果navigation bar包含多个文本按钮,点击这些按钮可能会一起运行,从而使按钮无法区分。可以在按钮之间插入固定空间项来添加分隔。

    2.4K110

    一个 Hybrid SDK 设计与实现

    Hybrid 、Native、前端各自工作是什么 Hybrid 交互接口如何设计 Hybrid Header 如何设计 Hybrid 的如何设计目录结构以及增量机制如何实现 资源缓存策略,白屏问题...比如 H5 如何跳转到一个 Native 页面,H5 如何新开 Webview 并做动画跳转到另一个 H5 页面 ◆ 账号信息设计 账号系统是重要且无法避免,Native 需要设计良好安全身份验证机制...,如果不可后退则回到指定URL,Native如果检测到不可后退返回Naive大首页 // home前端默认返回指定URL,Native默认返回大首页 this.header.set({...加载对应 url ,直接 load 本地资源。 对于 webview网络请求,其实也可以交由客户端接管,比如在你所采用 Hybrid 框架中,为前端注册一个发起网络请求接口。...是无法拦截请求

    1.2K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券