如何从htmlpat . fromhtml中的String资源中应用CSS样式



我的目标是通过HTML中的CSS或其他方式将justify应用于文本,同时仍然允许textColor,textFont等格式。

有一个老帖子有一些很好的答案,但它并没有真正满足上述所有要求,特别是允许格式化文本。

虽然这个解决方案可能仍然有一些潜力,我可能只是在实现中忽略了一些东西。我看到过一个类似的问题,有一个公认的答案,但我不相信它是如何工作的,因为它在Kotlin.

对于上下文,我只需要此工作为API级别19及以上。

到目前为止我得到的是:

MainActivity.java:

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView justify = (TextView) findViewById(R.id.content_to_justify);
justify.setText(HtmlCompat.fromHtml(getString(R.string.text_to_justify), 0));
...

activity_main.xml:

...
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/justify_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/content_to_justify"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto_regular"
android:textColor="@color/grayxxxx"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout>
...

strings.xml:

<resources>
...
<string name="text_to_justify" translatable="false">
<![CDATA[
<html>
<body style="text-align:justify;color:gray;background-color:black;">
Lorem ipsum..
</body>
</html>
]]>
</string>
...
</resources>

注意额外的CSS样式。我只是把它添加到那里,看看它是否确实有效,而不仅仅是text-align:justify独有的问题。

我试着将CharSequence转换为HtmlCompat.fromHtml,像这样:

justify.setText((CharSequence) HtmlCompat.fromHtml(getString(R.string.text_to_justify), 0));

但是没有变化。

是我错过了什么还是我挖错了洞?

由于android Textview不支持所有html标签,Webview是一个更好的解决方案,因为可以应用html和内联CSS样式。所以像下面这样输入

webView=findViewById(R.id.webview);
String text= "<html>"
+ "<body>"
+ "<style type="text/css">body{color: #d3d3d3; background- 
color:#fffff;}"
+ "</style>"
+"<p align="justify">"
+ text_to_justify
+ "</p></body></html>";
webView.loadData(text, "text/html", "utf-8");

WebView也不会接受TextView xml中支持的textColor属性。

相关内容

  • 没有找到相关文章

最新更新