Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

에이치의 모바일 앱 개발

TextView> UI Postion Setting version 1.0.1 본문

Android/Android 개발 소스

TextView> UI Postion Setting version 1.0.1

로이누리 2017. 12. 23. 01:39

기본적으로 TextView 크기는 디바이스 설정 폰트에 따라 변경 되는것이 좋으므로 SP 지정 형식을 따르는 것이 좋다.


1/3) TextView 에 입력될 String Value 색, 글꼴, 크기 변경


SpannableStringBuilder spanString= new SpannableStringBuilder("가나다라");


//글자색 변경

spanString.setSpan(new ForegroundColorSpan(Color.parseColor("#666666")), 0, spanString.toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);


//글자크기변경

spanString.setSpan(new AbsoluteSizeSpan(30), 0, spanString.toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

※ 3/4 크기 할당


//Typeface

spanString.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, spanString.toString().length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

.Typeface.BOLD_ITALIC, .Typeface.ITALIC

return new SpannableStringBuilder(spanString);


//첫글자 대문자

StringBuilder sb = new StringBuilder("가나다");

sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));



2/3) TextView 자바소스코드에서 속성 설정


DisplayMetrics metrics;

getWindowManager().getDefaultDisplay().getMetrics(metrics);

int displayWidth = metrics.widthPixels;

int displayHeight = metrics.heightPixels;


        textview.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);

        textview.setSingleLine(true);

        textview.setEllipsize(TextUtils.TruncateAt.END);

        textview.setTextColor(Color.parseColor("#333333"));

        textview.setTextColor(Color.rgb(148, 83, 61));

        textview.setTextColor(0xFF3366CC);

        textview.setMaxWidth(displayWidth * 900 / 1080);

        textview.setTypeface(null, Typeface.BOLD);


+ 텍스트 흘러가게 할시 setEllipsize 변경 + 자바소스에 textview.setSelected(true); 추가


        
---------------------------------------------
3/3) 추가 항목        
TextView 에 기본 문자 외에 문자에 대한 스타일을 지정할수 있다.

Html 클래스를 이용하여 HTML 태크로 아래 와 같이 설정할수 있다.

tv.setText(Html.fromHtml("<b>"+al.get(position).get("where")+"</b><br> "+
           "<font color=\"red\" align=\"center\" >"+al.get(position).get("name")+"</font><br>"+
           "<font color=\"green\"><b><i>출발시간:"+al.get(position).get("time")+"</i></u></font>"));

위 코드는 내부적으로 파싱되어  SpannableStringBuilder  클래스로 재처리 된다고 한다.

따라서 가능하면 SpannableStringBuilder 로 처리하면 HTML 파싱시간을 단축할수 있다고 한다 물론 그 파싱시간은 현재 단말기들의 사양이 높아 짐에 따라 크게 신경쓰지 않아도 될만한 속도 차이이고 로직 처리에 따라 위 Html 클래스를 사용할때 코드를 줄일수 있다면 Html 코드를 사용해도 무방하다고 한다.


//URL Link

ss = new SpannableString(str3);
ss.setSpan(new URLSpan("http://www.google.co.kr"), 0, str3.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
sps.append(ss);
URL Span 은 URL 링크가 되지 않는다.



++ text size get



txt_busRegion.measure(0, 0);
int textWidth= 1080- 218- txt_busRegion.getMeasuredWidth();
txt_busNum.setMaxWidth(displayWidth * textWidth / 1080);

 

Comments