기본으로 제공하는 위젯들
텍스트 뷰나 버튼과 같은 뷰들을 일반적으로 위젯
이라고 부르기도 한다. 안드로이드 기기에서 바탕화면에 설정하는 위젯과는 헷갈리지 않기 바란다. 안드로이드에서 기본적으로 제공하는 위젯들에 대해 본 글에서 다루고자 한다. 실제로 제공하는 위젯은 이보다 더 다양하다.
각각의 위젯 (뷰)에 대한 여러가지 속성을 소개할 떄, 각각의 속성은 모두 android:속성
의 형태로 XML 코드에 선언 할 수 있다. 안드로이드 스튜디오를 사용할 경우 프리뷰
화면에서 설정할 수도 있다. 모든 속성을 지정할 때 속성의 이름은 대소문자를 반드시 구분해야한다. 자동완성 기능이 있는 IDE를 사용한다면 자동완성 되므로 신경쓰지 않아도 될 수 있다.
텍스트 뷰 (TextView)
레이아웃을 구성할때 가장 많이 사용되는 기본 위젯으로써, 이름 그대로 텍스트를 화면에 보여주는 역할을 한다. 텍스트 뷰에서 사용하는 속성은 다양하고 아래와 같다.
text
텍스트뷰에 보이는 실제 문자열을 설정한다. 텍스트뷰의 특성상 표시할 문자열이 없을 경우 텍스트뷰가 차지해야할 공간의 영역을 게산할 수 없게 되므로 텍스트 뷰를 사용할 경우에는 반드시 문자열을 지정해야 한다. 기본적으로 text
속성에 직접 원하는 문자열을 지정할 수 있다.
안드로이드 애플리케이션 프로젝트를 처음 생성할 경우 앱의 이름이 res/values/strings.xml
파일안에 정의되어 있는 것을 볼 수 있다. 이러한 방법으로 문자열을 정의해 둘 경우 XML 코드나 JAVA 코드에서 해당 문자열을 쉽게 참조할 수 있고, 국가마다 다른 언어를 사용하거나 단말에서 다른 언어나 다른 표기로 지정할 경우에도 쉽게 구분하여 표시할 수 있다. strings.xml
파일안에 정의된 문자열은 @string/id
형태로 참조할 수 있다.
다국어를 자동적으로 지원하고 싶은 경우에는 리소스 폴더에 국가 언어 파일을 설정하면 된다. 예시 폴더 구조는 아래와 같다.
res/
values-en/
strings.xml
values-ko/
strings.xml
위의 예제와 같이 values-국가코드
의 이름을 가진 폴더명으로 생성하고 그 아래에 자신이 원하는 리소스 xml파일을 추가할 경우, 안드로이드 기기에서 영문, 한글등으로 언어 설정을 변경할때, 해당 언어에 맞춰 자동적으로 로딩을 하게 된다. ko
의 경우 한글, en
의 경우 영문 언어를 가리킨다.
textColor
이름 그대로 텍스트 뷰안에 정의된 문자열의 색상을 결정하는 속성이다. 색상 설정은 #AARRGGBB
의 포맷을 일반적으로 사용하며 각각의 바이트는 Alpha
, Red
, Green
, Blue
를 의미한다. 각각의 색상값을 높게 할 수록 해당 색상이 진하게 표시되며 Alpha
값의 경우 불투명은 FF
, 완전 투명은 00
, 반투명은 88
값을 일반적으로 사용한다. 실제로는 Red
, Green
, Blue
등의 미리 선언된 다양한 색상 변수를 사용할 수 있다.
textSize
텍스트뷰에 표시되는 문자열의 크기를 설정한다. 일반적인 프로그램에서 폰트의 크기라고 생각하면 편하다. 크기의 단위는 dp
, sp
, 또는 px
등의 단위 값을 사용할 수 있다.
textStyle
텍스트뷰에서 표시되는 문자열의 스타일 속성을 설정할 수 있다. 굵기, 기울기 등을 나타내는 normal
, bold
, italic
등의 값을 지정할 수 있으며, |
기호를 사용하여 여러가지 속성 값을 한번에 지정할 수 있다. |
의 앞뒤로는 공백이 존재해서는 안된다. 예를 들어 bold|italic
형태로 사용할 수 있다.
typeface
텍스트뷰에 표시되는 문자열의 폰트를 설정한다. 안드로이드에 내장된 폰트를 기본적으로 선택할 수 있으며, 자신의 res
폴더에 추가한 폰트또한 지정할 수 있다. 안드로이드에 내장된 폰트는 몇 개 되지 않고, 일반적으로 normal
, sans
, serif
, monospace
중의 하나를 사용한다.
singleLine
텍스트뷰에서 표시하는 문자열을 한 줄로만 표시하도록 설정한다. 여러 줄을 표시할 수 있는 multiLine
속성과는 반대되는 속성이며, 문자열이 한줄 이상일 경우 ...
표시가 문자열의 뒤에 붙게 된다. 기본 값은 false
이므로 singleLine
속성을 true
로 설정하지 않는 한 문자열을 여러줄로 표시하게 된다.
아래는 실제 코드 예제를 나타내며 singleLine
속성이 true
로 설정되어 있으므로 text
속성에 더 많은 글자를 입력할 경우 뒤의 문자열이 ...
로 처리되는 것을 확인할 수 있다.
본 글은 Do it! 안드로이드 앱 프로그래밍을 참조하여 작성되었습니다.
<TextView
android:text="문자열 입력"
android:textSize="22dp"
android:textStyle="bold|italic"
android:textColor="#88ff8888"
android:typeface="serif"
android:singleLine="true"
/>