[android]02. 기본 위젯

목차

  1. 기초적인 위젯



1. 기초적인 위젯

텍스트 뷰

텍스트뷰 속성 역할
text 텍스트뷰에 보이는 문자열 설정
textColor 텍스트뷰에서 표시하는 문자열의 색상 지정
textSize 문자열의 크기 설정
textStyle 문자열의 스타일 속성 설정
normal, bold, italic 등의 값을 중복 지정 가능함
typeFace 텍스트뷰에서 표시하는 문자열의 폰트 설정
maxLines 텍스트뷰에서 표시하는 문자열의 최대 줄 수 설정


버튼

버튼은 텍스트뷰의 속성을 바탕으로 추가 기능들을 가지고 있습니다. Radio button, Check box가 대표적입니다. 아래는 대표적인 메소드를 정리했습니다.

속성 역할
isChecked() 버튼이 선택되어 있는지 확인함
setChecked(boolean checked) 코드 상에서 상태 값을 지정함
onCheckedCahnged(CompoundButton buttonView, boolean isChcked) 상태가 바뀔 경우 호출됨
clearCheck() 라디오 버튼들의 선택 상태를 모두 해제함
setOnChckedChangeListener() 라디오 버튼의 선택 상태가 변경될 때 이벤트 처리함
(OnChckedChangeListener 인터페이스 구현해야 함)


Edit text

입력상자입니다. inputType 속성으로 입력할 데이터의 유형을 설정합니다. hint 속성을 사용하면 글자를 입력하지 않았을 때 안내글을 표시합니다.


이미지뷰

이미지를 보여줍니다. src 또는 srcCompat 속성으로 @drawble/이미지명 형식으로 이미지 파일을 결정합니다. scaleType 속성은 이미지가 이미지뷰의 영역을 꽉 채울 것인지 아니면 이미지 원본의 크기를 유지할 지 결정하는 속성입니다.

res/drawble-hdpi에 넣은 이미지는 고해상도 화면에서, /res/drawble-mdpi에 넣은 이미지는 중간 해상도 화면에서 자동으로 적용됩니다.


자주 사용하는 속성들

커서
selectAllOnFocus 속성을 설정하면 포커스를 받을 때 문자열 전체가 선택됩니다. cursonVisible 속성을 false로 설정하면 커서가 보이지 않습니다.

자동링크
문서에 웹 페이지나 이메일 주소가 있으면 링크 색상으로 표시하고 이 링크를 누르면 웹 페이지에 접속하거나 메일 편집기를 띄워주는 autoLink 속성이 있습니다.

줄 간격 조정
lineSpacingMultiplier는 줄 간격을 배수로 설정할 때 사용하고, lineSpacingExtra는 여유 값으로 설정할 때 사용합니다.

대소문자 표시
capatalize 속성은 대문자나 소문자로 바꾸어 표시하는 기능을 제공합니다.

줄임 표시
텍스트뷰가 한 줄로 되어 있을 때 줄을 넘어가는 텍스트가 설정되어 있으면 “…”으로 표시됩니다. ellipsize 속성을 이용하여 문자열의 어디를 잘라서 표시할 것인지 설정할 수 있습니다.

힌트 표시
에디트 텍스트에 어떤 내용을 입력하라고 안내문을 주고자 hint 속성을 사용합니다. textColorhint 속성을 이용해 색상을 지정할 수 있습니다.

편집 가능
에디트텍스트에 입력된 문자열을 편집하지 못하게 하려면 editable 속성 값을 “false”로 설정할 수 있습니다.

스크롤 뷰

화면 영역을 벗어나는 경우 스크롤 뷰로 감싸는 방식으로 사용합니다. 스크롤 뷰는 안에 하나의 direct child(직계 자식?)만 존재할 수 있습니다. 다양한 뷰를 넣으려면 하나의 뷰 그룹안에 뷰들을 추가하세요.

스크롤 뷰는 수직 스크롤링만 지원하므로 수평 스크롤링을 쓰려면 HorisontalScrollView를 이용해야 합니다.

스크롤 뷰 안에 RecyclerView나 ListView를 넣지 마세요. 성능과 조작감이 떨어집니다.(poor user interface performance and a poor user experience) 수직 스크롤이라면, NestedScrollView를 사용하는 걸 고민해보세요.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="50dp"
                android:text="가나다\n가나다\n가나다\n가나다\n가나다\n가나다\n가나다\n가나다\n가나다\n가나다\n가나다\n가나다\n" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>

ScrollView 안에 LinearLayou을 통해 뷰를 넣습니다. 아래 결과를 확인하면 스크롤이 정상적으로 실행되는 걸 확인할 수 있습니다.

0201