Android实现简易浏览器遇到问题的解决方法_Android

 最近没事写了一个简易浏览器,在刚开始写的时候遇到一些问题,主要的问题就是如何在自己的webview中显示所有的网页数据,不过不指定自己的webview显示所有网页数据则会调用系统默认的webview来加载数据,所以解决的办法就是用webview的setWebViewClient()方法设置自己的webviewclient对象,这个对象就是专门负责网页url与webview绑定的类,重写当中的shouldOverrideUrlLoading(WebView view, String url)方法,把view换成自己的webview就OK了。

当按回退键盘的时候返回历史页面可以重写activity的onkeydown()方法拦截回退键事件,然后判断webview.canGoBack(),返回true就webview.goback()就行了。

如过还想加上放大/放小 控制按钮就必须先设置webView是支持zoomControls的,设置方法是通过web_content.getSettings().setSupportZoom(true),然后通过webview.getZoomControls()方法得到zoomControls的view,再通过getWindow().getDecorView() .findViewById(Android.R.id.content)得到webview的显示内容的空间,现在就只用把刚刚得到得zoomControls加到webview的内容空间中就OK了。还有1个问题就是当webview上方出现edittext空间时如果webview中也同时出现(比如:百度,google中的输入框)时就会出现焦点冲突问题,解决方法就是实现webview的setOnTouchListener事件,在事件中设置webview.requestFocus()就行了.

还是贴上源码吧:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    init();
  }
private void init() {
   web_content = (WebView) findViewById(R.id.web_content);
WebSettings set = web_content.getSettings();
    set.setSupportZoom(true);
    set.setJavaScriptEnabled(true);
    set.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 

    View control = web_content.getZoomControls();
    FrameLayout layout = (FrameLayout) getWindow().getDecorView()
        .findViewById(android.R.id.content);
    FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
        FrameLayout.LayoutParams.WRAP_CONTENT,
        FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM
            | Gravity.RIGHT);
    params.bottomMargin = 10;
    params.rightMargin = 10;
    layout.addView(control, params); 

    web_content.setOnTouchListener(new View.OnTouchListener() { 

      @Override
      public boolean onTouch(View v, MotionEvent event) {
        web_content.requestFocus();
        return false;
      }
    }); 

    web_content.setWebViewClient(new WebViewClient() { 

      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        tx_address.setText(url);
        return true;
      } 

    });
web_content.loadUrl(parseUrl(defaultPage));
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
浏览器
简易浏览器、易语言简易浏览器、浏览器webgl遇到问题、安卓简易浏览器源码、android简易浏览器,以便于您获取更多的相关知识。

时间: 2024-11-05 14:51:46

Android实现简易浏览器遇到问题的解决方法_Android的相关文章

Android实现简易浏览器遇到问题的解决方法

最近没事写了一个简易浏览器,在刚开始写的时候遇到一些问题,主要的问题就是如何在自己的webview中显示所有的网页数据,不过不指定自己的webview显示所有网页数据则会调用系统默认的webview来加载数据,所以解决的办法就是用webview的setWebViewClient()方法设置自己的webviewclient对象,这个对象就是专门负责网页url与webview绑定的类,重写当中的shouldOverrideUrlLoading(WebView view, String url)方法,

过滤Android工程中多余资源文件的解决方法_Android

本文以实例讲述了过滤Android工程中多余资源文件的解决方法,很有实用价值!具体描述如下: 很多开发人员在Android项目开发过程中经常会遇到这样的情况:界面开发人员发布了一个新版本的资源包,不过有的图片名称改了,有的图片删掉了,可是在实现的时候开发人员只是把新的资源覆盖到原来的资源文件夹中,随着版本的发布,在drawable或values中积累的无用资源越来越多,直到最后发布正式版的时候再想要删除这些多余的文件,于是不得不一个一个文件检查看是否有用,再决定要不要删除之. 有鉴于此,很有必要

Android Fragment多层嵌套重影问题的解决方法_Android

1解决bug的思想: //step1:当bug被发现(排除极低偶然性,单次性,开发工具导致) //step2:根据经验判断bug的重现场景,多次测试,直到精准的定位bug //step3:根据重现场景找到对应的代码 //step4:分析区域代码是否会影响到其他功能. //step5:做好数据的备份工作.(做好代码重构和恢复的准备,这样你才能肆无忌惮的捣鼓代码) //step6:修复代码的过程中,你会发现可能有多种解决方案.试着采取不影响主线的解决方案.以免影响到其他的代码. //step7:回顾

android连续拖动导致挂起的解决方法_Android

当我保持对连续将对象拖有时在移动后 5 6 拖/滴,看到有时不获取对象还原不回来,我不能用于以后. 基本上我有对两个对象组的 canvas 在 time 可以有最大的两个图像不是更多比,也看到图像 为什么会发生呢,我们如何防止? (function () { var canvas = new fabric.Canvas('canvas'); var canvas_el = document.getElementById('canvas'); var canvas1 = new fabric.Ca

android中view手势滑动冲突的解决方法_Android

Android手势事件的冲突跟点击事件的分发过程息息相关,由三个重要的方法来共同完成,分别是:dispatchTouchEvent.onInterceptTouchEvent和onTouchEvent. public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来进行事件的分发.如果事件传递到view,那么这个方法一定会被调用,返回结果受当前View的onTouchEvent和下级View的dispatchTouchEvent方法的影响,表示是

Android开发 旋转屏幕导致Activity重建解决方法_Android

Android开发文档上专门有一小节解释这个问题.简单来说,Activity是负责与用户交互的最主要机制,任何"设置"(Configuration)的改变都可能对Activity的界面造成影响,这时系统会销毁并重建Activity以便反映新的Configuration. "屏幕方向"(orientation)是一个Configuration,通过查看Configuration类的javadoc可以看到其他Configuration还有哪些:如fontScale.ke

Android SDK三种更新失败及其解决方法_Android

最近在网上看Moto 360的图片,真是帅,帅了又帅,比帅更帅.所以想研究下Android wear. 更新Android SDK,居然失败了三次. 1.第一次失败 出现Failed to fetch URL错误提示 Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.xml, reason: Connection to https://dl-ssl.google.com refused Fa

基于Android中实现定时器的3种解决方法_Android

在Android开发中,定时器一般有以下3种实现方法:一.采用Handler与线程的sleep(long)方法二.采用Handler的postDelayed(Runnable, long)方法三.采用Handler与timer及TimerTask结合的方法下面逐一介绍:一.采用Handle与线程的sleep(long)方法Handler主要用来处理接受到的消息.这只是最主要的方法,当然Handler里还有其他的方法供实现,有兴趣的可以去查API,这里不过多解释.1. 定义一个Handler类,用

Android ListView数据绑定显示的三种解决方法_Android

首先,创建一个用于显示一个item的layout,名为item.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout