목차
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을 통해 뷰를 넣습니다. 아래 결과를 확인하면 스크롤이 정상적으로 실행되는 걸 확인할 수 있습니다.