繁体   English   中英

在 Android 中的 ListView 上显示 Css 样式 Html 数据

[英]Display Css Styled Html Data on ListView in Android

所以,我想在ListView上部分显示包含 css (字体大小、颜色、字体系列、文本装饰等)的大 html 字符串。 I know there are some options for this, like using WebView and TextView with fromHtml() method, but fromHtml isn't supporting css and WebView isn't divisible for ListView items. 有什么想法吗?

TextView对 css 非常差,但它不是显示样式网站内容的工具,因此对于简单的 html 文本来说已经足够了。 当涉及到WebView时,最好显示复杂的 html、css、ZDE9B9ED708D7E2E1ZEFFEE1 内容。 如果需要,您可以使用。 当然它并不比TextView快,但是有一些性能改进,如下:

// In AndroidManifest

<application
    android:allowBackup="true"
    android:hardwareAccelerated="true"
    ...
>

<activity android:name=".activity.MainActivity"
        android:hardwareAccelerated="true">
...

// In onCreate method from Activity class

WebView webView = (WebView) findViewById(R.id.webViewId);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDefaultTextEncodingName("utf-8");
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(false);
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setLoadWithOverviewMode(true);
settings.setDomStorageEnabled(true);
this.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
this.setScrollbarFadingEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
    this.setLayerType(View.LAYER_TYPE_HARDWARE, null); // chromium, enable hardware acceleration
else
    this.setLayerType(View.LAYER_TYPE_SOFTWARE, null); // older android version, disable hardware acceleration

// use this, for don't getting some errors.
webView.loadDataWithBaseURL(null, "HtmlString", "text/html; charset=UTF-8", "UTF-8", null);

您不能在 android 的本机fromHtml()上使用 CSS 属性,但肯定可以使用第三方库作为支持 CSS 的fromHtml()的替代品。 其中之一可以是这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM