如何使用默认文本字体将svg图标添加到TextView?

时间:2016-02-29 14:26:48

标签: android svg fonts textview

这是我的自定义文字视图:

public class CustomTextView extends TextView {
    public CustomTextView (Context context) {
        super(context);
    }

    public CustomTextView (Context context, AttributeSet attrs) {
        super(context, attrs);
        setCustomFont(context, attrs);
    }

    public CustomTextView (Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setCustomFont(context, attrs);
    }

    private void setCustomFont(Context ctx, AttributeSet attrs) {
        setCustomFont(ctx);
    }

    public boolean setCustomFont(Context ctx) {

        Typeface tf = null;
        try {
            tf = Typeface.createFromAsset(ctx.getAssets(), "icons/svg_icons.ttf");
        } catch (Exception e) {
            return false;
        }

        setTypeface(tf);
        return true;
    }
}

我的图标代码是:

<string name="svg_warning" translatable="false">&#xe900;</string>

我将带有文本的svg图标添加到TextView:

mytextview.setText(String.format("Please Select a Country %s",getResources().getString(R.string.svg_warning)));

但是“请选择国家/地区”的字体与默认的Android字体不同。如何使用默认的Android文本字体将svg图标添加到TextView?

结果: enter image description here

1 个答案:

答案 0 :(得分:1)

天哪,我从来不知道textviews支持这样的svg!

正如我从您的代码中看到的,您的customTextView将具有您刚刚在setCustomFont方法中设置的Typeface。您可以做的是有2个textviews,一个是svg的customTextView,左边是一个水平的LinearLayout和一个普通的TextView。你不能在textview中的某些文本中使用一种字体,而在文本的其他部分使用另一种字体,在web中你可以为p标签使用2种不同的字体吗?

<LinearLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal">
    <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"/>
    <CustomTextView
                    android:layout_width="wrap_content"
          android:layout_height="wrap_content"/>
</LinearLayout>