在 XML 中通过数据绑定用一行代码定制字体

来源:互联网 发布:win7软件停止运行 编辑:程序博客网 时间:2024/04/28 12:20
在 XML 中通过数据绑定用一行代码定制字体 (plus.google.com)

Lisa Wray 对新的数据绑定库的能力印象深刻,会在本文中展示如何用它来定制字体


I started playing with data binding last night for real, and I'm amazed by the power it gives you.  Check out this one-liner to set a custom font on a TextView:

@BindingAdapter({"bind:font"})
public static void setFont(TextView textView, String fontName){
 textView.setTypeface(Typeface.createFromAsset(textView.getContext().getAssets(), "fonts/" + fontName));
}

In XML:
<TextView
app:font="@{`Source-Sans-Pro-Regular.ttf`}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

Previously, this used to take endless lines of repetitive Java code (one for each TextView!). The missing custom typeface support in TextView has been a grievance held against the Android platform for years.  There's even an inventive library to address it[2]. Data binding makes all of that obselete.  If you can't tell, I'm in love!!  It's terse, powerful, and one of the biggest leaps forward I've seen for Android productivity.

As usual, you need to put your font file in assets/fonts/, and make sure to include the data binding framework.  And if you're doing this to many TextViews, just get a little more fancy and cache the Typeface instead of creating it every time (thanks for the reminder +Ian Lake!)

[1] https://developer.android.com/tools/data-binding/guide.html
[2] Calligraphy: https://github.com/chrisjenx/Calligraphy

0 0
原创粉丝点击