android - Java 代码中 "android:fontFamily="sans-serif-light"的等价物是什么?

标签 android typeface

我的问题很简单:

在我的每个 TextView 中,我目前都在使用属性

android:fontFamily="sans-serif-light"

在后 HC 设备上提供华丽的外观。

不幸的是,这不适用于每个小部件,对于我的 Spinner,我需要覆盖适配器。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //You can use the new tf here.

    if(convertView == null || convertView.getTag() == null) {
        // new view - populate 
        convertView = inflater.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false);
        convertView.setTag(new Object());
    }

    CheckedTextView spinner_text=(CheckedTextView) convertView.findViewById(android.R.id.text1);
    //Typeface should be set here...
    return spinner_text;
    }
}

那么,有没有办法通过代码得到完全相同的结果?

PS:不,我不想在 Assets 文件夹中放字体,我只想使用系统一。

最佳答案

setTypeface()Typeface.create() 应该可以实现:

convertView.setTypeface(Typeface.create("sans-serif-light", Typeface.NORMAL));

Docs :

Create a typeface object given a family name, and option style information. If null is passed for the name, then the "default" font will be chosen. The resulting typeface object can be queried (getStyle()) to discover what its "real" style characteristics are.

请注意,过度使用 Typeface.create() 对您的内存力不利,如 this comment 中所述. suggested Hashtable是一个很好的解决方案,但您必须对其进行一些修改,因为您不是从 Assets 创建字体。

关于android - Java 代码中 "android:fontFamily="sans-serif-light"的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343903/

相关文章:

java - 如何使用 Parcelable 从 arraylist 索引传递元素?

android - 如何在android studio中创建自定义字体

android - 在 iOS 中,我们在 Android 上是否有类似 Gradle Build Flavors 的东西

java - android无法在自定义对话框中的 ListView 中使用获取所有编辑文本值

java - 在 ObjC 中检索 String 的字节会返回与 Java 不同的结果

java - 在android中导入字体时出现空指针异常

html - 垂直居中似乎不适用于 Chrome 移动版中的某些字体

CSS 下划线问题与 chrome 上的字体

android - 如何以编程方式为 textview 设置字体?

java - 使用 JAX-RS 带注释的资源的 ReSTLet 客户端