String Calss 란?
JAVA에서 String 객체내 보관하는 문자열은 유니코드로 변형하여 보관하므로 HTML과 같이 마크업 문자를 입력하고 출력할 때 문제가 발생한다. 따라서 String 객체에 입력되는 문자열은 마크업 문자를 입력하여 사용할 수 없는 문자열인란 의미로 변경금지 문자라 부른다.
CharSequence 란?
반면에 CharSequence 객체내 보관하는 문자열은 같은 String 클래스와 같은 유니코드라 하더라도 마크업 문자를 사용하여 변형과 가공이 가능한 문자열이란 의미로 스타일 문자 또는 연속되는 문자라고 한다.
◆ CharSequence 객체의 제공 Method
- char charAt(int index) : 인덱스가 가리키는 문자를 반환한다.
- int length() : CharSequence 객체의 문자수를 반환한다.
- CharSequence subsequence(int start, int end) : start부터 end까지의 문자를 반환한다.
- String toString() : CharSequence 객체를 문자열로 반환한다.
◆ XML 문서와 JAVA 프로그램간의 출력하거나 읽을 때 사용 할 수 있도록 XML 버퍼타입을 제공한다.버퍼타입은 Enum 타입으로 지원한다.
- NORMAL : 디폴트 CharSequence 객체로 반환된다. XML 문서내 문자열은 입력시 소스 문자가 스타일 문자면 스타일 문자로 반환되고 아닌 경우는 일반 String 객체의 문자열로 반환된다.
- SPANNABLE : 마크업문자를 넣을 수 있는 스타일 문자이다. 항상 스타일 문자로 반환된다.
- EDITABLE : 편집가능한 스타일 문자이다. EditText는 EDITABLE 속성으로 반환된다.
◆ TextView 클래스에서 제공하는 메서드
- CharSequence getText()
- void setText (CharSequence text)
- void setText (int resid, TextView.BufferType type)
- void setText (CharSequence text, TextView.BufferType type)
◉String.xml에서 마크업 문자로 작성.
<?xml version=”1.0” encoding=”utf-8”?> <resources> <string name=”styled_text”>기본(Plain), <b>강조 bold</b> <i>이텔리체 italic</i> <b><i>bold-italic</i></b></string>> </resources>
◉CharSequence 객체로 받아서 처리 할 때.
private void charSequence() { CharSequence cs = getText(R.string.styled_text); tv.setText(cs); }
이와 같이 getText() method로 읽어 CharSequence 객체 필드로 보관하면 스타일이 유지된다. 강조나 이탤리체가 적용 안되보이는것은 폰트가 지원을 안하기 때문이다. 지원하는 폰트를 사용하면 적용이 잘된다.
◉String 객체로 받아서 처리 할 때.
private void string() { String str = getString(R.string.styled_text); tv.setText(str); }
이와 같이 getString() method로 읽어 String 객체 필드로 보관하면 스타일이 유지되지 않는다. 위에 설명 했다시피 String은 변경금지 문자이기 때문이다.
관련글
댓글 없음:
댓글 쓰기