【问题标题】:Nativescript Prettify Code using google-code-prettify or any other pluginNativescript Prettify Code 使用 google-code-prettify 或任何其他插件
【发布时间】:2019-08-22 21:55:09
【问题描述】:

我正在尝试在我的应用程序中显示代码。我尝试使用 HtmlView 和 google-code-prettify 但我无法在我的代码中导入 js 文件。我也不确定它是否支持 Nativescript,因为文档只字未提。以下是相关代码示例:

主页.xml

<Page loaded="pageLoaded" class="page" xmlns="http://www.nativescript.org/tns.xsd">

    <ActionBar title="Home" class="action-bar">
    </ActionBar>

    <ScrollView>
        <StackLayout class="home-panel">
            <HtmlView html="{{ htmlString }}" />            
        </StackLayout>
    </ScrollView>
</Page>

home-view-model.ts

import { Observable } from 'tns-core-modules/data/observable';

export class HomeViewModel extends Observable {
    htmlString: string = "<pre class=\"prettyprint\"><br/>" +
        "List<MyOrderItemModel> myOrderItemModelList = new ArrayList&lt;&gt;();" +
        "<br/>" +
        "myOrderItemModelList.add(new MyOrderItemModel(R.drawable.tide_prod, 2, \"Tide Detergent\", \"149.50\", \"Ren's Grocery\", \"Juan Dela cruz\", \"Order_Received\", 4, 3));<br/>" +
        "<br/>" +
        "if (myOrderItemModelList.contains(\"Delivered\")) {<br/>" +
        "    MyOrderItemOnProcessAdapter myOrderItemOnProcessAdapter = new MyOrderItemOnProcessAdapter(myOrderItemModelList);<br/>" +
        "    my_orders_recyclerview.setAdapter(myOrderItemOnProcessAdapter);<br/>" +
        "    myOrderItemOnProcessAdapter.notifyDataSetChanged();<br/>" +
        "}<br/>" +
        "  </pre>";

    constructor() {
        super();
    }
}

我还创建了一个示例游乐场示例https://play.nativescript.org/?template=play-tsc&id=uGaqc3&v=5

有人知道在 Nativescript 中美化代码的方法吗?

【问题讨论】:

  • 你试过WebView吗?
  • HtmlView 仅支持非常有限的标签/样式。
  • 不,但我想它是用来在你的应用程序中显示网页的。不确定如何使用它来显示我的自定义代码?
  • 我明白了,但是如何使用任何现有的插件来美化代码?

标签: typescript nativescript


【解决方案1】:

使用 WebView 代替,HtmlView 仅支持非常有限的标签/样式。

XML

<WebView src="{{ htmlString }}" />

JS

htmlString: string = "<script src=\"./code-prettify/loader/run_prettify.js\"></script>" +
        "<pre class =\"prettyprint\"><br/>" +
        "List<MyOrderItemModel> myOrderItemModelList = new ArrayList&lt;&gt;();" +
        "<br/>" +
        "myOrderItemModelList.add(new MyOrderItemModel(R.drawable.tide_prod, 2, \"Tide Detergent\", \"149.50\", \"Ren's Grocery\", \"Juan Dela cruz\", \"Order_Received\", 4, 3));<br/>" +
        "<br/>" +
        "if (myOrderItemModelList.contains(\"Delivered\")) {<br/>" +
        "    MyOrderItemOnProcessAdapter myOrderItemOnProcessAdapter = new MyOrderItemOnProcessAdapter(myOrderItemModelList);<br/>" +
        "    my_orders_recyclerview.setAdapter(myOrderItemOnProcessAdapter);<br/>" +
        "    myOrderItemOnProcessAdapter.notifyDataSetChanged();<br/>" +
        "}<br/>" +
        "  </pre>";

Updated Playground

【讨论】:

  • 感谢您的回复。这并不能真正美化代码。
  • 我不知道你所说的美化是什么意思,它应该做的一切,尊重间距和换行符。如果你想美化,使用美化库。
  • 通过美化,我的意思是给关键字赋予不同的颜色,类似于 StackOverflow 对代码的处理方式。我添加了 google-code-prettify 库,但不知道如何在 Nativescript 中导入它们。
  • 应该是直截了当的,只需在 html 字符串中包含库即可。
  • 感谢 Manoj 提供的信息。我们有些接近。从插件导入脚本时代码着色不起作用,如您的打字示例中所示,但在使用脚本时起作用
猜你喜欢
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多