我在calligraphy之前使用Font resources,我们看到这已转移到Font资源,并且一切正常,如果我的文本视图内容是html和bold属性,我只会遇到一个问题( ),它没有突出显示,但是如果我通过xml删除了Font资源并使用编程方式,则它可以使用相同的字体。
我可以举个例子 我正在使用字体资源,如下所示
font_regular.xml
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
<font
app:font="@font/myfont"
app:fontStyle="normal"
app:fontWeight="700" />
</font-family>
我的文字视图
<TextView
app:fontFamily="@font/font_regular"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="15sp"
/>
当我将其应用于包含粗体的html数据时,所有数据都来自服务器,作为html数据,例如以下示例数据
数据
<p>Hi i am <b>bold</b></p>
预期结果
嗨,我大胆
但是输出将是
嗨,我很胆大
字体已成功应用,但粗体部分没有变粗
但是当我通过Typeface以编程方式使用它的时候
以编程方式
Typeface typeFace= Typeface.createFromAsset(context.getAssets(),
"fonts/myfont.otf");
我用google搜索并浏览了我在google上看到的所有文档,但没有一个文档指向我如何通过字体资源实现此目的。
请帮助我了解我是否可以通过字体资源实现此目的
答案 0 :(得分:2)
我使用此代码在某些应用中实现了类似的功能,并且确实有效。我希望这可以帮助
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mDescTextView.setText(Html.fromHtml(myHtmlText, Html.FROM_HTML_MODE_COMPACT));
} else {
Spanned myHtmlText = HtmlCompat.fromHtml(getContext(), myHtmlText, 0);
mDescTextView.setText(myHtmlText);
}
好的。如果这对您不起作用,并且正如您所提到的,以编程方式添加字体时字体工作正常,那么在这种情况下,我有另一种选择。这可能不是您要查找的确切答案。但我认为从长远来看会有所帮助。无需以编程方式设置字体,也无需在xml中添加字体。使用您自己的textview类将在所有位置自动加载字体,也可以使用声明的属性(在values / attrs.xml中)设置粗细。
<com.youpackage.yourapp.view.customview.CustomTextView
android:id="@+id/txt_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:hint="@string/label_full_name"
app:customFontThickness="bold"
android:inputType="textEmailAddress" />
有关自定义textview类和属性声明,请参见此。 https://github.com/pramodpmk/CustomTextView
答案 1 :(得分:-1)
添加此
String str =嗨,我是+“ ” +粗体+“ ”;
tv_view.setText(Html.fromHtml(str));