[Android] TextView Android 2011. 12. 19. 10:11
텍스트 뷰는 버튼과 에디트 텍스트의 상위 계층이다.

버튼과 에디트 텍스트는 이를 상속받아서 그 기능을 쓰기 때문에 거의 동일한 속성들을 이용 할 수 있다.

각 속성에서 보면 에디트 텍스트에는 scrollHorizontally 라는 속성이 있다. 이것은 문자열이 가로 스크롤을 넘어 입력을 받더라도 문자열을 계속 입력 할 수 있고 엔터 키를 누르면 강제로 개행이 바뀐다. 하지만 singleLine 속성을 주면 개행이 되지 않는다.

Hint는 배경에 이 컴포넌트가 어떤 동작을 하는 것인지 예시를 적어 줄 수도 있게 되어 있다. 마치 백그라운드 처럼 나타난다.

또한 selectAllOnFocus 속성을 지정하면 문자열 전체를 선택하면서 캐럿은 맨 마지막에 위치 한다.

cursorVisible은 편집 중인 문자열의 위치를 보이거나 숨겨준다.

autoLink는 | 를 통하여 여러가지 링크를 같이 한다. 그 종류는 다음과 같다.

none - 링크 지원하지 않음
email - 이메일 주소
map - 지도 주소
web - 웹 주소
phone - 전화번호
all - 모든 패턴 인식

Editable 을 이용하면 문자열 편집이 가능하다.

Editable insert(int index, CharSequence text) 경우는 어디 위치에 text를 삽입하라
Editable delete(int index, int endIndex) 경우는 어디 위치에서 endIndex까지 문자열을 삭제하라
Editable append(char text) 경우는 맨 마지막에 text를 붙여라
void clear() 경우는 문자열 clear
Editable replace(int startIndex, int endIndex, CharSequence text) 경우는 어디 위치에서 어디 위치까지 문자열 변경하라

TextWatcher 를 이용하면 입력되는 문자의 변경을 감지 할 수 있다.

단 android.text.*; 을 import 시켜야 한다.

다음은 그 예제 이다.

TextView view;
 EditText edit;
 @Override   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        view = (TextView)findViewById(R.id.view);
        edit = (EditText)findViewById(R.id.edit);
        edit.setFilters(new InputFilter[]{new InputFilter.LengthFilter(3)});
        edit.addTextChangedListener(watcher);
    }
 
 TextWatcher watcher = new TextWatcher(){
  public void afterTextChanged(Editable s){
   
  }
  public void beforeTextChanged(CharSequence s, int start, int count, int after){
   
  }
  public void onTextChanged(CharSequence s, int start, int before, int count){
   view.setText("echo : " + s);
  }
 };

위에서 보면 after, before, on 으로 변경 후, 변경 전, 변경 중 상태에 대한 이벤트라는 것을 알 수가 있다.

또한 setFilters를 이용하여 입력하는 문자열의 길이를 제한 시킬 수도 있다.