首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置SquareTextView TypeFace

如何设置SquareTextView TypeFace
EN

Stack Overflow用户
提问于 2016-03-27 22:13:57
回答 2查看 172关注 0票数 0

我正在尝试使用SquareTextView为地图标记的集群图标设置自定义字体,这是一个扩展TextView的android-maps-utils-amap库的类。在DefaultClusterRenderer中,我使用这段代码来设置自定义字体,但没有效果。所以请帮助我理解我需要做些什么来改变SquareTextView的字体

代码语言:javascript
复制
private SquareTextView makeSquareTextView(Context context) {
    SquareTextView squareTextView = new SquareTextView(context);            
    Typeface typeface = Typeface.createFromAsset(context.getAssets(), "whatever.ttf");
    squareTextView.setTypeface(typeface);
}

这是SquareTextView的源代码

代码语言:javascript
复制
package com.amap.api.maps2d.ui;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.TextView;

public class SquareTextView extends TextView {
    private int mOffsetTop = 0;
    private int mOffsetLeft = 0;

    public SquareTextView(Context context) {
        super(context);
    }

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

    public SquareTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int width = getMeasuredWidth();
        int height = getMeasuredHeight();
        int dimension = Math.max(width, height);
        if (width > height) {
            mOffsetTop = width - height;
            mOffsetLeft = 0;
        } else {
            mOffsetTop = 0;
            mOffsetLeft = height - width;
        }
        setMeasuredDimension(dimension, dimension);
    }

    @Override
    public void draw(Canvas canvas) {
        canvas.translate(mOffsetLeft / 2, mOffsetTop / 2);
        super.draw(canvas);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2016-03-27 22:37:32

我有自己的TextView实现,我使用它来设置字体,如下所示,它对我很有效:

代码语言:javascript
复制
public class MyNewTextView extends TextView {
private int mOffsetTop = 0;
private int mOffsetLeft = 0;

public MyNewTextView(Context context) {
    super(context);
}

public MyNewTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

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

@Override
public void setTypeface(Typeface tf, int style) {
     super.setTypeface(Typeface.createFromAsset(getContext().getAssets(),   "fonts/whatever.ttf"), style);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = getMeasuredWidth();
    int height = getMeasuredHeight();
    int dimension = Math.max(width, height);
    if (width > height) {
        mOffsetTop = width - height;
        mOffsetLeft = 0;
    } else {
        mOffsetTop = 0;
        mOffsetLeft = height - width;
    }
    setMeasuredDimension(dimension, dimension);
}

@Override
public void draw(Canvas canvas) {
    canvas.translate(mOffsetLeft / 2, mOffsetTop / 2);
    super.draw(canvas);
}
}

因此尝试为SquareTextView重写setTypeface()

票数 0
EN

Stack Overflow用户

发布于 2016-03-27 22:48:27

让您自己的SquareTextView实现尝试一下:

代码语言:javascript
复制
public class MySquareTextView extends SquareTextView {

    public MySquareTextView (Context context) {
        super(context);
        setTypeface();
    }

    public MySquareTextView (Context context, AttributeSet attrs) {
        super(context, attrs);
        setTypeface();
    }

    public MySquareTextView (Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setTypeface();
    }


    public void setTypeface(){
        setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Italic.ttf"));
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36248314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档