gpt4 book ai didi

android - 如何从 TextView 获取 fontFamily 名称?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:57:28 28 4
gpt4 key购买 nike

我想从代码中的 xml 中获取字体系列名称属性名称。例如我有自定义 textView 类:

public class TextVieww extends TextView{

public TextVieww(Context context) {
super(context);
}
public TextVieww(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TextVieww(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void init(Context mContext ,TextView view) {
}
}

XML:

 <com.typefacetest.TextVieww
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textStyle="bold"
android:fontFamily="sans-serif-thin"
android:text="Hello World!" />

我想从 textView.class 中获取“sans-serif-thin”。这个有可能?以及如何做到这一点?谢谢

最佳答案

如果字体系列名称是在 XML 中定义的,则无法以编程方式获取字体系列名称,因为当在 XML 中定义时,它会在编译时映射到关联的 native 字体系列并且无法收回,没有一些丑陋的反射(我会尝试找到一个来源对于上述要求的完整答案,Typeface 的文档似乎是有限的)。

正如@Ashwini 在评论中提到的,您始终可以在 Assets 文件夹下使用自定义字体,并且能够在 XML 文件和 .java 中看到它。

或者,如果您想使用原生字体系列,您可以做一些更简单但有点不雅的事情;使用 TextView 的 android:tag 字段来存储字体系列名称:

在 XML 中:

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id='@+id/textView'
android:textSize="30sp"
android:textStyle="bold"
android:fontFamily="@string/myFontFamily"
android:tag="@string/myFontFamily"
/>

在 res/values/strings.xml 中:

<resources>
...
<string name="myFontFamily">sans-serif-thin</string>
...
</resources>

然后你可以通过android:tag字段访问字体系列名称:

TextView textView = (TextView) findViewById(R.id.textView);
String fontFamily = String.valueOf(textView.getTag());

关于android - 如何从 TextView 获取 fontFamily 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37137234/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com