10

我正在创建一个自定义 TextView 类 MTextView 。在构造函数内部,我想知道 textview 的样式属性的值,以便我可以根据样式是否设置为粗体来设置不同的字体。但是没有 getStyle() 函数?该怎么办?

    public class MTextView extends TextView{

    public MTextView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            if(style.equals(TypeFace.bold))  //how to get style?
                setTypeface(Typeface.createFromAsset(getContext().getAssets(),"rc.ttf"));
    }



    }
4

2 回答 2

28

您可以从 TextView 的getTypeface()实例方法中获取 textStyle。

int style = getTypeface().getStyle();

如果没有指定textStyle(即你想支持普通的textStyle),那么getTypeface()可以返回null。

在它不为空的情况下,最好假设 textStyle 被隐式设置为正常。

于 2013-04-02T10:41:53.643 回答
1

使用此代码:

    if (attrs != null) {
        try {
            int style = attrs.getAttributeIntValue(
                "http://schemas.android.com/apk/res/android",
                "textStyle", 
                Typeface.NORMAL);

            setTypeface(Typeface.createFromAsset(
                            getContext().getAssets(), 
                            "rc.ttf"), 
                        style);
        }
        catch (Exception e) {
            Log.e(TAG, e.getMessage());
        }
    }
于 2015-09-18T23:27:48.967 回答