반응형

이번에는 기본 폰트가 아닌 외부의 폰트를 사용해 보려한다.

이클립스에서는 간단히 assets폴더에 폰트 파일을 집어넣고 ..

((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(),

"Roboto-Regular.ttf"));

와 같이 적어 주면 간단히 끝난다.

 

하지만... 안드로이드 스튜디오에 assets폴더가 없더라.... 헐..

 

검색해보니

 

 

위와 같이 Project-app-src-main 폴더에서 우클릭후 new-directory에서 "asset" 폴더를

만든 후 폰트파일들을 옮겨놓으면 끝...

 

 

 

또한 Util클래스에 아래의 메소드를 생성 후...

 

public static void setGlobalFont(Context context,View view){
if (view != null) {
if (view instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) view;
int len = vg.getChildCount();
for (int i = 0; i < len; i++) {
View v = vg.getChildAt(i);
if (v instanceof TextView) {
((TextView) v).setTypeface(Typeface.createFromAsset(

context.getAssets(), "Roboto-Regular.ttf"));

}
setGlobalFont(context, v);
}
}
} else {
L.m("This is null);
}

}

 

Activity에서 아래와 같이 호출해주면 해당 Activity안의 모든 텍스트뷰에 해당 폰트가 적용된다.

 

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
initView(R.layout.activity_login);
Util.setGlobalFont(this, getWindow().getDecorView());

}

 

 

또한 listView 같이 아이템뷰들을 Inflate하는 경우는 다음과 같습니다.

 
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=inflater.inflate(R.layout.work_list_row, parent,false);
Util.setGlobalFont(context, view);
MyViewHolder holder=new MyViewHolder(view);
return holder;
}
 
 
 
 

 

 

 

 

 


반응형

WRITTEN BY
아카이시

,