我的目标是通过HTML中的CSS或其他方式将justify
应用于文本,同时仍然允许像textColor
,textFont
等格式。
有一个老线程有一些很好的答案,但它并没有真正满足上述所有要求,特别是允许格式化文本。
虽然这个解决方案可能仍然有一些潜力,我可能只是在实现中忽略了一些东西。我见过一个类似的question,它的答案是可以接受的,但我对它在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));
但是没有变化。
是我漏了什么还是我挖错洞了?
1条答案
按热度按时间dwbf0jvd1#
由于Android Textview不支持所有的html标签,Webview是一个更好的解决方案,因为可以应用html和内联CSS样式。试着像下面这样,
WebView也不接受TextView xml中支持的textColor等属性。