4

我一直在谷歌搜索,但还没有找到解决方案。

TextView我知道我可以像这样以编程方式更改字体view.setTypeface(Typeface.createFromAsset(getAssets(),"dejavusans.ttf"));

但是,没有办法直接在 xml 文件中执行此操作吗?我找到android:typeface了属性,但它只有“正常”、“sans”、“serif”和“monospace”选项。我怎样才能使用我拥有的这种字体/assets/fonts/Roboto-Regular.ttf

谢谢。

4

1 回答 1

9

我写了一个可以做到这一点的图书馆项目。它被称为 Nifty:https ://github.com/tom-dignan/nifty

使用 nifty,您可以在您的 assets 目录中从您的 styles.xml 文件中指定字体,或者直接在您的 XML 布局中作为一个属性。它提供了一个自定义NiftyTextViewNiftyButton继承了其父类的所有功能,除了提供在 XML 中指定字体的能力。

示例样式:

<style name="MyStyle" parent="@android:style/Theme">
        <item name="typeface">my_font_that_is_in_assets.ttf</item>
</style>

示例 XML:

 <com.tomdignan.nifty.NiftyTextView
        android:id="@+id/title"
        style="@style/MyStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />    

或者,如果您不使用样式:

 <com.tomdignan.nifty.NiftyTextView
            xmlns:nifty="http://schemas.tomdignan.com/nifty"
            nifty:typeface="my_font_that_is_in_assets.ttf"
            android:id="@+id/title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />  

变得漂亮

注意事项:自定义视图在布局编辑器中不可预览。我的解决方法是使用搜索/替换。

于 2012-05-06T23:32:34.353 回答