이 게시물에서 twaddington의 조언을 사용하고 있습니다.
ActionBar 제목에 사용자 지정 글꼴을 설정하는 방법은 무엇입니까?
작동하지만 글꼴 크기를 변경해야합니다. 어떻게해야합니까? int maxSize 인수를 수정하려고했습니다.
private static LruCache<String, Typeface> sTypefaceCache =
new LruCache<String, Typeface>(12);
TypefaceSpan 클래스 또는 onCreate 메서드에서 수행됩니까?
서체
public class TypefaceSpan extends MetricAffectingSpan {
/** An <code>LruCache</code> for previously loaded typefaces. */
private static LruCache<String, Typeface> sTypefaceCache =
new LruCache<String, Typeface>(12);
private Typeface mTypeface;
/**
* Load the {@link Typeface} and apply to a {@link Spannable}.
*/
public TypefaceSpan(Context context, String typefaceName) {
mTypeface = sTypefaceCache.get(typefaceName);
if (mTypeface == null) {
mTypeface = Typeface.createFromAsset(context.getApplicationContext()
.getAssets(), String.format("fonts/%s", typefaceName));
// Cache the loaded Typeface
sTypefaceCache.put(typefaceName, mTypeface);
}
}
@Override
public void updateMeasureState(TextPaint p) {
p.setTypeface(mTypeface);
// Note: This flag is required for proper typeface rendering
p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}
@Override
public void updateDrawState(TextPaint tp) {
tp.setTypeface(mTypeface);
// Note: This flag is required for proper typeface rendering
tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}
}
MainActivity onCreate
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SpannableString s = new SpannableString("TEST TITLE");
s.setSpan(new TypefaceSpan(this, "MotorwerkOblique.ttf"), 0, s.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ActionBar actionBar = getActionBar();
actionBar.setTitle(s);
}
페인트에 추가하면 업데이트 할 때마다 textSize를 지정해야하는 새 페인트를 적용합니다. 서체를 글꼴 / 문자 집합에 더 가깝게 생각하십시오. Android 문서는 다음과 같이 설명합니다.
Typeface 클래스는 글꼴의 서체 및 내장 스타일을 지정합니다. 이것은 textSize, textSkewX, textScaleX와 같은 선택적으로 Paint 설정과 함께 페인트에서 사용되어 텍스트가 그려지고 측정 될 때 표시되는 방식을 지정합니다.
이것을 읽은 후 다음을 수행하도록 제안합니다. (이것이 당신이 원하는 것을 할 수 있는지 확실하지 않습니다.하지만 알려주세요)
@Override
public void updateMeasureState(TextPaint p) {
p.setTypeface(mTypeface);
// Note: This flag is required for proper typeface rendering
p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
p.setTextSize(25);//or what ever size you want
}
@Override
public void updateDrawState(TextPaint tp) {
tp.setTypeface(mTypeface);
// Note: This flag is required for proper typeface rendering
tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
tp.setTextSize(25);//or what ever size you want
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다