如何在我的小部件中设置自定义字体?
remoteViews.setTextViewText(R.id.text1,""+ days);
有人可以向我展示如何为此设置字体的示例吗?
如何在我的小部件中设置自定义字体?
remoteViews.setTextViewText(R.id.text1,""+ days);
有人可以向我展示如何为此设置字体的示例吗?
如何在我的小部件中设置自定义字体?
你没有。您可以通过 选择布局 XML 中的三种内置字体之一android:typeface
,但不能在 a 中使用带有 a 的自定义TextView
字体RemoteViews
。setTypeface()
,用于在 a 上指定自定义字体的 Java 方法TextView
不适用于RemoteViews
。
有两种解决方法可能会有所帮助。
1 - 如果您只能显示 AppWidget 自己设置的文本,则可以使用 SpannableStrings 和TypefaceSpans来执行此操作(以及用于粗体的Stylespans等)。您可以使用普通的setTextViewText调用设置 SpannableString。
2 - 如果您确实需要更改 TextView 的字体系列,以便将来的文本与字体系列一起显示,这更难。正如 CommonsWare 所提到的,您不能使用 RemoteViews 以编程方式设置任意字体系列。但是,如果您有一组较小的预定义字体(或粗体等字体粗细),则有一种方法可以做到这一点。它并不漂亮,但如果字体和变体的数量得到适当控制,它就可以工作。
就我而言,我正在使用 TextClock 创建一个时钟 appwidget。因为文本更新不受 AppWidget 控制,所以我无法使用 SpannableStrings。我想提供 6 种内置字体选项。我在我的布局文件中创建了 6 个 TextClock,每个都有不同的字体,并简单地使我想要的一个可见,而其他的在配置时“消失”。丑陋但有效。所以:
appwidget_layout.xml
<TextClock
android:id="@+id/clock_seconds_condensed"
android:fontFamily="sans-serif-condensed"
....
/>
<TextClock
android:visibility="gone"
android:id="@+id/clock_seconds_normal"
android:fontFamily="sans-serif"
....
/>
<TextClock
android:visibility="gone"
android:id="@+id/clock_seconds_black"
android:fontFamily="sans-serif-black"
....
/>
...
配置活动
//Which font do we want? Choose that clock
val clockid = when (fontFamily) {
"san-serif" -> R.id.clock_seconds_normal
"sans-serif-light" -> R.id.clock_seconds_light
"sans-serif_black" -> R.id.clock_seconds_black
"sans-serif-thin" -> R.id.clock_seconds_thin
"sans-serif-medium" -> R.id.clock_seconds_medium
else -> R.id.clock_seconds_condensed
}
//Hide all the other clocks
if (clockid != R.id.clock_seconds_normal) views.setInt(R.id.clock_seconds_normal, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_light) views.setInt(R.id.clock_seconds_light, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_black) views.setInt(R.id.clock_seconds_black, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_thin) views.setInt(R.id.clock_seconds_thin, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_medium) views.setInt(R.id.clock_seconds_medium, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_condensed) views.setInt(R.id.clock_seconds_condensed, "setVisibility", View.GONE)
//Set clock parameters
views.setInt(clockid, "setVisibility", View.VISIBLE)
....
试试这个,它可能会帮助您了解如何申请custom font effects
您的textview