doo*_*ker 3 android android-layout kotlin
你如何在res/font文件夹内传递一个字体系列,例如@font/roboto_medium,作为一个 XML 格式的 Android 自定义视图的属性,然后在自定义视图中将它读入一个Typeface对象?这是对文本进行自定义图形渲染所必需的。
例如:
<MyCustomView android:fontFamily="@font/roboto_medium"/>
Run Code Online (Sandbox Code Playgroud)
然后在 MyCustomView.kt 中:
override fun onCreateView(...) {
// parse android:fontFamily attribute into Typeface object
val typeface: Typeface = ???
}
Run Code Online (Sandbox Code Playgroud)
Typeface似乎没有任何功能支持这一点。其中一个接受assets文件夹内的自定义字体,另一个接受直接嵌入在 Java/Kotlin 代码中的资源字体整数,例如R.font.roboto_medium.
doohickey_maker 的答案确实有效。
在 layout.xml 你需要添加 android:fontFamily="@font/name"
在 attrs.xml 中
<declare-styleable name="LoadingButton">
<attr name="android:fontFamily" />
Run Code Online (Sandbox Code Playgroud)
在自定义视图中
int fontFamilyId = typedArray.getResourceId(R.styleable.LoadingButton_android_fontFamily, 0);
if (fontFamilyId > 0) {
mButton.setTypeface(ResourcesCompat.getFont(getContext(), fontFamilyId));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1510 次 |
| 最近记录: |