1. TextView 구조와 레퍼런스 보기

Posted by ITPangPang
2017. 3. 28. 17:45 파고들기/TextView





TextView

구조와 레퍼런스 보기




ㆍ 그냥 계속무언가 파고 들고 싶은맘은 있는데..

     마무리가 항상 안되지만... 일단 이것도시작..


ㆍ 별 거 없이 그냥 TextView를 자세히 알아보려고 한다.


ㆍ 처음에 View로 시작할까 하다가.. View로 시작하면

     양이 너무 많아서 끝날것 같지 않아 TextView로 먼저 시작..







레퍼런스 보기



일단 레퍼런스를 참고해서 알아보려고 한다.


https://developer.android.com/reference/android/widget/TextView.html


위 사이트를 열어서 보면

아래와 같이 아주 자세히 나온다.

공부할때는 레퍼런스 보는게

제일 좋은 것 같다..

영어공부도 나름 되고..






TextView


영어를 잘하시는 분은 레퍼런스를 보면

아마 이 놈이 뭐하는 놈인지 이해가 잘 될 것이다.


영어를 잘 못 하는 내가 봐도

어느 정도 이해는 가능한 것 같다..


깔끔한 해석이 아닌

아주 콩글리쉬 단어위주로

해석해서 풀이로 하면 아래와 같은

용도로 쓰이는 것 같다.


1. 유저에게 Text를 보여주기 위해 사용

2. TextView는 완벽한 Text 편집기이다.

3. 보여진 Text는 편집이 가능하다.

4. 그러나 기본적으로는 편집을 허용하지 않는다.

5. 편집을 위해서는 서브클래스인 EditText를 봐라.

6. 유저는 TextView의 모든(일부) 내용을 복사하고 붙여넣기 할 수 있다.

7. 복붙을 위해서는 android:textIsSelectable을 사용하면 된다.


다른 것도 중요하겠지만,

역시나 1번이 가장 크다.


TextView는

단순하게 유저의 눈에 Text를

뿌려주기 위한 공간이다.

(아래에 EditText는 언젠가는 쓸 계획이다..)


이렇게 보면 아주 간단한

녀석인데...


레퍼런스에서 마우스휠을 내려보면

양이 어마어마하다..


양이 많다는건,

긍정적으로 생각하면 제공해주는

옵션이 많다는 것이다.


만약 원하는 옵션이 있는데,

안드로이드에서 제공을 안해준다면..

아주 간단한 것도 몇백줄 또는 몇천줄

코딩을 통해서 해결해야 하는 경우가 있을 것이다.


제공하는 옵션이 많다는건 아주

고마운 일이다...


어쨋든 앞으로 할 일은

여기 있는 내용을 될 수 있으면..

다 다뤄봤으면 좋겠다..


안드로이드 스튜디오에서

직접 코딩을 통하여..



TextView 구조


이걸 구조라고

말하는게 적절한지는 모르겠다..


구조?

계층구조?


레퍼런스를 보면 위에도 나와있겠지만

TextView는

View를 extends 하고

ViewTreeObserver.onPreDrawListener를 implements 한다


implements는 일단 스킵하고.


먼저 View를 extends 한다고 한다.


extends...

상속...


이 개념을 또 제대로 알려고

파고들면 30분은 글을 써야 할 것 같다.


쉽게 받아들이면 글자 그대로

상속!

부모한테 물려받는 것이다.


부모한테 물려받은것은 내가 쓸 수 있다는 개념이다.


위에서 TextView는

View를 상속받는다고 나와있다.


풀어보면

TextView는 부모인 View가 가진 것을

사용할 수 있다는 개념이다.


예를 들어서

View 레퍼런스를 참고하면

https://developer.android.com/reference/android/view/View.html



위에 링크에서 쭉 내려보면

View클래스(부모)는


addFocusables

이라는 메서드를 사용할 수 있다.


실제로 안드로이드에서

View를 하나 만들어서 .(점)을

찍어보면 나오기도 한다.




addFocusables이라는

기능을 자식인 TextView도 쓸 수 있게

하는 것이다 상속이다.


TextView 레퍼런스 페이지에서

Ctrl + F를 눌러서

addFocusables로 검색해도

나오지 않는다.


자식인 TextView의 고유기능이

아니기 때문이다.


안드로이드에서 TextView를 생성해서

한번 addFocusables를 찾아보면


이렇게 사용 가능하다고 나온다.


한번 addFocusables를 써 놓은후에

Ctrl키를 누른 후에 마우스로 addFocusables에

가져다 대보면



이렇게 뜨는데 마우스로 한번 클릭해본다.



클릭을 하면 이렇게 뜨는데


이동된 클래스에서 가장 위로 가보면

(Ctrl + Home을 누르면 된다)



이렇게 부모인 View 클래스였다는 것을

확인 할 수 있다.


부모의 기능을 가져와서 사용하는 것이다.


지금은 이렇게 addFocusables

하나만 봤지만


실제로는 View 클래스(부모)에 있는

모든 것을 가져다 쓸 수 있다.



내 자식들도 한번 보면


역시나 레퍼런스를 보면

이런 부분이 있다.




여기서

Known Direct Subclasses

Known Indirect Subclasses


이 부분을 보면 된다.


이것들이 무슨 말인가 하면

Direct Subclasses(자식)

Indirect Subclasses(손자, 손손자, 손손~~자)


라는 의미이다.


위에서 extends를 하면

자식이 부모의 기능을 쓸 수 있다고 말했었는데


View가 TextView의 부모였다면


TextView도 누군가에겐 부모인 것이다.


먼저 가장 앞에 나와있는

AppCompatTextView를 안드로이드에서

열어보자




AppCompatTextView extends TextView


이 부분만 눈에 들어오면 성공이다.


extends View와 같이


이번에는 TextView가

extends TextView

됐으므로 부모가 된 것이다.


그러므로

AppCompatTextView는 TextView의

자식이 되는 것이다.



이번에는 Indirect Subclass를 한번 보면


AppCompatAutoCompleteTextView

이란 Subclass가 있다.


얘를 역시나 열어보면,


부모를 알아보니

AutoCompleteTextView이다.


이번엔

AutoCompleteTextView의 부모를 알아보면

부모를 알아보니 EditText이다.


또 다시 EditText의 부모를 알아보면


이렇게 TextView가 나오는 것을 알 수 있다.


결국 

AppCompatAutoCompleteTextView는

TextView의 손손자가 되는 것이다.


증손자라고 하면 될 것 같다.


그렇다면 TextView의 증손자는

TextView의 부모인 View의 메서드를

쓸 수 있을까?


간단하게 점만 찍어보면 알 수 있다.


이렇게 증손자든

손손손자든 조상님이

쓰고있는 기능은 모두 가져다

쓸 수 있다는 걸 알 수 있다.



정리


뭐 사실 위에 쓴 것들은

TextView에서만 해당되는

내용은 아니지만,


한번은 써야 하므로 첫번째글에서

간단하게 다뤄봤다.


TextView만 본다면

이번글에서 알아야 될 내용은


1.  TextView는 유저에게 Text를 보여주기위한 공간이다.


이게 제일 중요한 내용이다.


구조는 아래와 같다고 보면 된다.


'파고들기 > TextView' 카테고리의 다른 글

3. setText를 써보자(2)  (1) 2017.11.25
2. setText를 써보자(1)  (4) 2017.03.29