2011-01-21 8 views
1

나는 내 자신의 사용자 정의 글꼴을 사용하는 사용자 정의 textview를 구현하려고합니다.사용자 정의 글꼴을 사용하는 사용자 정의 텍스트보기

Super.onDraw()를 수행하기 전에 서체를 설정하는 방법이 있습니까?

일반적인 글꼴을 사용하려는 사용자 지정 글꼴로 바꿉니다. 같은

뭔가 :

protected void onDraw(Canvas canvas) 
{ 
    Typeface font1 = Typeface.createFromAsset(context.getAssets(), "fonts/myfonts.ttf"); 
    this.setTypeface(font1); 
    this.setTextSize(18); 
    super.onDraw(canvas); 
} 

나는 위의 코드가 작동하지 않습니다 알고있다.

아니면 doText()를 사용하여 선택의 여지가 있습니까?

답변

1

오, 내 잘못, 실제로 글꼴을 변경합니다.

Eclipse의 미리보기에는 표시되지 않았지만 에뮬레이터에는 표시됩니다.

문제가 해결되었습니다.

9

onDraw 메서드가 호출 될 때마다 새 Typeface 객체를 만드는 것은 매우 나쁜 습관입니다. 글꼴 설정과 같은 작업은 클래스 생성자에서 수행해야하지만보기가 작성 될 때마다 수행되어야합니다.

0
public class CustomTextView extends TextView { 

public CustomTextView(Context context, AttributeSet attributes) { 
    super(context, attributes); 
    applyCustomFont(context); 
} 

private void applyCustomFont(Context context) { 
    TypeFace customTypeFace = Typeface.createFromAsset(context.getAssets(), "custom_font_name"); 
    setTypeface(customTypeFace); 
} 

@Override 
public void setTextAppearance(Context context, int resid) { 
    super.setTextAppearance(context, resid); 
    applyCustomFont(context); 
} 
} 

는 코드가 정의 TextView를 생성하고, 텍스트 뷰의 생성 중에 사용자 정의 폰트 세트.
프로그래밍 방식으로 텍스트 모양을 설정하려고하면 사용자 지정 글꼴이 다시 설정됩니다. 따라서 setTextAppearance 메서드를 무시하고 사용자 정의 글꼴을 다시 설정할 수 있습니다.

관련 문제