`
scliu0718
  • 浏览: 52307 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Android使用WebView加载文字总结之中文乱码、禁止横向滚动、自动换行

 
阅读更多

其实之前的初衷是想满足在Android中实现复制功能,使用TextView或者EditText来复制显示文字,在网上也找了一些资料,好像都不行,也许是我自己的问题;

最终想想使用WebView来实现这个功能。

在Android中使用WebView加载本地数据(文字)时容易出现的问题:
一、 WebView加载中文时乱码
通常做法:
1). 通过给webView设置编码格式
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("UTF-8") ;
2.加载时给之设置编码格式:
webView.loadData(str.toString(), "text/html","UTF-8");
3.在拼html的时候给拼上“<html><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />。。。。。</html>
通过以上三种方式得出结果,依然乱码,胡乱猜测可能是一个Bug。
最后解决办法:
采用loadDataWithBaseURL的方式加载(代码如下):
webView.loadDataWithBaseURL("", str.toString(), "text/html","UTF-8", "");
二、WebView内容对齐
这个说起来其实是两个问题,第一个是禁止横向滚动,另外一个是根据webview宽度让其自动换行。
1.禁止横向滚动,在WebView的API其实是有提供的
 WebSettings settings = webView.getSettings();
 settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

从字面上就可以看出来“SINGLE_COLUMN”,单列的意思,它就是根据控件宽度来压缩内容大小。(还有另外两种就不多介绍了),

但是如果是加载图片是可行的,不过在文字的时候就不灵光了。不知其原因。(见第2个问题)

2.根据webview宽度让其自动换行
以上不可压缩文字大小,现在只剩下换行了,WebView是没有这个接口的,也许是我没找到,我采用的方式是让html自已去换行,也就是拼html达到自动换行目的。如下:
<p style=\"word-break:break-all;\">。。。。</p>
三、由于WebView设置Padding无效,所以也可以用html的方式给设置padding
padding:12px;

最终代码:

WebView webView = new WebView(g_context);
webView.setScrollContainer(false);
webView.setScrollbarFadingEnabled(false);
webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);


WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("UTF-8") ;
settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
settings.setBuiltInZoomControls(false); // 设置显示缩放按钮
settings.setSupportZoom(false); // 支持缩放

StringBuffer str = new StringBuffer();
str.append("<html><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><body><p style=\"word-break:break-all; padding:12px;\">")
.append("Hello World!")
.append("</p></body></html>");

webView.loadDataWithBaseURL("", str.toString(), "text/html","UTF-8", "");



分享到:
评论

相关推荐

    Android实现WebView懒加载

    4. **图片加载优化**:使用如`WebSettings.setBlockNetworkImage(true)`阻止网络图片的自动加载,然后在JavaScript中添加逻辑,在图片进入视口时手动加载。 5. **资源预加载**:如果有必要,可以预先加载一些关键...

    Android webview加载网页.zip

    这个“Android webview加载网页.zip”文件可能包含了一个示例项目或者教程,帮助开发者理解如何在Android应用中有效地使用WebView。 WebView的使用涉及到以下几个关键知识点: 1. **WebView组件引入**:在...

    Android-AndroidWebView加载PDF文件实现

    Android WebView 加载 PDF 文件实现。其原理就是在 app 本地搭建一个 website ,然后利用 WebView 加载这个站点,站点去实现加载显示 PDF 的目的,站点其原理也是采用 js 框架去实现的。

    Android WebView加载网页以及本地图片缓存问题

    总结,Android的WebView组件提供了丰富的功能,能够加载远程和本地资源,同时支持缓存机制,提高用户体验。开发者需要根据实际需求调整其配置和行为,以实现最佳的加载效果和性能。在处理图片资源时,特别要注意路径...

    详解android 用webview加载网页(https和http)

    Android WebView 加载网页是移动应用开发中的一项基本需求。然而,在加载 HTTPS 和 HTTP 网页时,WebView 可能会出现一些问题,本文将详细介绍这两个错误的解决方法。 错误一:加载 HTTPS 请求的网页时,WebView ...

    android之webView加载javascropt

    这篇博客“android之webView加载javascript”将深入探讨如何在Android应用中有效地使用WebView来加载和执行JavaScript代码。 首先,我们需要在AndroidManifest.xml中为应用添加互联网权限,因为加载网页内容需要...

    android中webview加载本地页面,并处理js事件

    在Android开发中,`WebView` 是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现与网页的交互。本示例“android中webview加载本地页面,并处理js事件”着重讲解如何利用`WebView`加载本地HTML页面,...

    android WebView预加载

    现在web app越来越多,webview控件的使用也越来越重要。 有时我们会在启动页或引导页之后,加载一个webview为控件的主页。 但如果跳转之后再加载,会看到webview有一个加载的过程,如果网页较大可能加载起来会很慢。...

    webview 加载js ,css

    下面我们将深入探讨如何在Android的WebView中加载和使用JS、CSS以及它们带来的优势。 1. Android WebView加载HTML Android的WebView可以通过调用`loadData()`或`loadDataWithBaseURL()`方法加载HTML字符串,或者...

    android Webview加载本地图片,自适应布局大小

    在使用`file://`协议时,注意安全问题,因为从Android 8.0(API级别26)开始,WebView默认禁止加载`file://` URL。为了支持本地文件,我们需要开启这个权限: ```java webView.getSettings().setAllowFileAccess...

    Android Webview 加载 H5Video

    搜索很多资料后发现很多问题,都是关键代码片段,因为每个项目每个人产生的问题不同,Video在webview中加载不出来原因很多,可能是客户端少了参数,也可能是前端出了问题,经过研究后对Android WebView 加载H5Video...

    android webView加载html 并引用本地资源(图片、字体库)

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容。这篇教程将详细介绍如何在WebView中加载HTML,并引用本地的资源,如图片和字体库。 首先,让我们理解WebView的基本用法。在...

    Android通过JS在线用webview加载PDF文件(无限放大版本)

    本教程将详细讲解如何在Android的Webview中加载在线PDF文件,并且实现无限放大功能。 首先,我们需要了解WebView的基本用法。WebView是Android SDK提供的一种组件,用于在应用程序内显示网页内容。我们可以使用`...

    android使用webview加载网页

    这个"android使用webview加载网页"的主题涉及到多个知识点,以下将详细介绍这些内容。 首先,我们需要理解WebView的基本用法。在Android Studio中,我们可以通过在布局XML文件中添加`&lt;WebView&gt;`标签来创建一个...

    android用webview加载assert中的html并且可拨打页面中的电话

    在Android开发中,Webview是一个非常重要的组件,它允许我们加载和显示网页内容。这篇教程将详细介绍如何在Android应用中使用Webview加载assert目录下的HTML文件,并且使用户能够通过Webview拨打电话。 首先,我们...

    Android 替换WebView加载失败时的页面

    做webview加载网页时,遇到一个问题,自带的webview错误页面不美观,于是自定义一个view提示用户,网上很多方法,也不稳定实现替换,结合网上的一些例子,加以优化和拓展,特此写一个完整版本的Demo供大家拿来直接...

    android 使用webview控件,注意在android9.0以后必须使用https才能访问网页

    总之,从Android 9.0开始,使用WebView加载网页时必须遵循更严格的网络安全性规则。开发者需要确保他们的应用遵守这些规则,以提供安全的用户体验。这不仅有助于提升应用的质量,也有助于维护用户的信任和隐私。在...

    Android实现WebView图片缓存,替换加载前默认图片的样式

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。然而,对于复杂的网页,特别是那些包含大量图片的页面,优化图片的加载和显示至关重要。本篇将详细介绍如何在Android的...

    android webview 加载网页 样例

    本文将深入探讨如何使用Android WebView加载网页,包括基本使用、配置设置、与JavaScript交互以及处理网络权限等问题。 一、WebView基础 1. 添加依赖 在Android Studio项目中,首先确保在`build.gradle`(Module)...

    Android 通过 WebView 与js 简单交互实现图文混排与查看大图功能

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用中加载和显示网页内容。本文将深入探讨如何利用WebView和JavaScript进行简单交互,以实现图文混排和查看大图的功能。 1. **WebView基本使用** - ...

Global site tag (gtag.js) - Google Analytics