본문 바로가기

Study/Android

[Android] TextView border, Textview 라인수, 외부 폰트 적용

TextView border

1. stroke 효과 주는 방법 참고: http://stackoverflow.com/questions/1723846/how-do-you-draw-text-with-a-border-on-a-mapview-in-android

설명:
먼저 위 사이트에서 Paint 에 stroke 값을 주는 방법을 알수 있었다.
다음 TextView 의 Paint 를 얻는 방법을 알아냈다.
 - TextView 에는 getPaint() 함수가 있다.
이제 TextView 의 onDraw 함수를 override 하고 Paint 에 stroke 스타일을 적용하여 한번 그림을 그리고 Paint 에 style 을 돌려놓고 그림을 다시 그리면 stroke 효과를 줄 수 있다.


예제:

2. Stroke TextView 사용
참고:
custom attribute: http://blog.pocketjourney.com/2008/05/02/android-tutorial-42-passing-custom-variables-via-xml-resource-files/

순서:
1) TextView 를 상속한 CustomTextView 라는 storke 효과를 주는 클래스를 만들었다.
2) xml 에서 stroke 속성값을 줄 수 있게 res/values/attrs.xml 파일에 속성값을 추가해 줬다.
3) layout xml 파일에서 CustomtextView 를 사용했다.

코드:
1) CustomTextView.java

2) res/values/attrs.xml

3) layout 에 적용

출처: https://tjandroid.blogspot.kr/2011/07/stroke-textview.html

 

 

textView 라인수

//title = TextView
title.post(new Runnable() {
    @Override
    public void run() {
        mLineCount = title.getLineCount();
    }
});

 

 

외부 폰트 2개 적용하기

처음 2글자까진 bold 그 다음부턴 regular

CustomTypefaceSpan bold = new CustomTypefaceSpan("", CommonUI.getFontTypeBold(ProgramActivity.this));
CustomTypefaceSpan light = new CustomTypefaceSpan("", CommonUI.getFontTypeLight(ProgramActivity.this));

String format = String.format(getString(R.string.program_schedule_not_today), mProgramList.size());

int idx = format.indexOf(getString(R.string.piece))+1;
SpannableStringBuilder ssb = new SpannableStringBuilder(format);
ssb.setSpan(bold, 0, idx, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
ssb.setSpan(light, idx, format.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

binding.layoutProgramNotice.viewProgramNoticeText.setText(ssb, TextView.BufferType.SPANNABLE);