这是使用 WebView 而不是 Textview 的好习惯吗? [关闭]

Posted

技术标签:

【中文标题】这是使用 WebView 而不是 Textview 的好习惯吗? [关闭]【英文标题】:Is that a good practice to use WebView instead of Textview? [closed] 【发布时间】:2015-02-16 15:27:28 【问题描述】:

我正在开发一个安卓应用程序,所有内容都需要在本地访问,即应用程序不需要互联网连接。应用程序仅具有静态内容。我已经开发了可以访问我本地存储在 assets 文件夹中的 html 页面的应用程序。我只想知道使用webview 进行文本格式化是好的(一般)做法,还是有任何其他方法可以在android 中格式化文本?据我所知,文本格式在 android 中有点乏味。另一件事应用程序将仅使用马拉地语。所以请告诉我任何其他可以看起来不错的格式化textview 的方法。

以下是webview的代码

public class AndroidHTMLActivity extends Activity 

    WebView myBrowser;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myBrowser = (WebView)findViewById(R.id.mybrowser);

        myBrowser.loadUrl("file:///android_asset/mypage.html");

    

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_
    android:layout_
    >
<TextView  
    android:layout_ 
    android:layout_ 
    android:text="@string/hello"
    />
<WebView 
    android:id="@+id/mybrowser" 
    android:layout_ 
    android:layout_ 
   />
</LinearLayout>

【问题讨论】:

WebView 对于格式化文本似乎有点矫枉过正。它将格式化您的文本,但它还会添加许多功能,这些功能只不过是批量代码。你需要做什么样的格式化?以相当简单的方式(字体、大小、颜色、样式)格式化 TextView 非常简单。 包括网页视图不是很好的做法,您可以在文本视图中使用一些html标签,请看一下androidengineer.com/2010/08/… 谢谢你的回答..但为什么这不是好的做法?我的应用没有很多内容,只是我需要一些文本格式 【参考方案1】:

简短的回答是:这取决于:)

问自己以下问题:

您要应用哪种格式? 你的文字会改变吗? 您打算使用哪种来源的文本?

现在解释一下:如果您想应用简单的格式(例如:粗体、斜体、某种颜色),TextView 是您的选择。它很简单并且可以完成工作。当您想要进行更复杂的格式化(如段落、缩进等)时,问题就来了。

您无法处理TextView 的特定情况是您的文本将被更改。我的意思是以下内容-您有一个包含两段的简单文本。您可以毫不费力地使用TextViews 做到这一点 - 两个TextViews 具有正确的布局,对吧?好的,但是如果您的文本是从 Internet 或数据库或外部文件加载的,并且更新的版本包含三个段落,会发生什么情况?现在你明白我的意思了 :) 在这种情况下,最好使用 ```WebView`` 因为数据本身包含格式。

WebView 是更好方法的另一种情况是,当您想要显示一些由外部工具生成的富文本时。例如,如果您有一个 doc 文件要在您的应用程序中显示,您可以将其转换为 html(有很多免费的在线工具可以做到这一点),然后您可以使用 @987654328 轻松显示它@ 保持所有格式、颜色、段落、图像、表格等不变。

结论:对于简单的情况,TextView 是首选方法,因为它简单,但对于更复杂的情况或当您的数据要更改其格式时,我推荐WebView

希望这会有所帮助:)

【讨论】:

嘿,Kiril 不错的答案.. 但是如果我的文本没有改变,我想在我的安卓应用程序中添加一些富文本..?? 嗨@AnupChaudhary,这取决于您希望它有多“富有”。您可以使用html 使其丰富,并使用WebView 加载它。这样你就可以轻松添加表格、边框、段落、图片等。如果你只想使用粗体、一个段落和一张图片,你可以使用TextViewImageView 谢谢这么好的答案.. 我会使用 Webview 很高兴看到我帮助了你 :) 是的,你帮帮我..堆栈上的人总是互相帮助..【参考方案2】:

WebView 在内部为显示 Html 数据提供了不同的功能。您也可以在 WebView 中使用 javascript

当您使用 Html.fromHtml() 时,TextView 仅支持少数 Html 标签。所以我觉得还是用 WebView 比较好。

更多详情请查看此链接

Which one is better between TextView or WebView?

【讨论】:

好的,谢谢你的回答.. 我会等待更多的答案,但谢谢你...... 浏览后,我同意@Adan Ali。我认为 textView 只是纯文本而不是真正的标记。 WebView 专为 Web 标记(即 html)而设计。因此,我会使用 WebView。还要考虑一个事实,如果您决定增强您的应用程序并将 javascript 添加到网页中,那么所有管道都已经为您完成了。这是我在这件事上的 2 美分。【参考方案3】:

TextView 不支持缩进和对齐,所以如果你需要,你必须使用 WebView。如果你只需要一些简单的 html 格式,那么 TextView 更快。

【讨论】:

以上是关于这是使用 WebView 而不是 Textview 的好习惯吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Android:以编程方式添加Textview,而不是将文本包装到下一行

Android Linkify.addLinks() 适用于一个 textview 而不是另一个

如何使用从 TextView 中的 firebaseDB 检索到的标签解析 HTML 文本?没有 WebView [重复]

加载 WebView 可防止在布局中加载其他视图

为啥 binding.myTextView 返回一个 TextView?而不是 TextView

如何从SharedPreferences文件中正确地将文本附加到TextView而不是覆盖它?