Yunster's 개인 공부 공간
5. 안드로이드 기본 위젯 살펴보기 본문
1. 위젯 소개 및 종류
- 위젯 : 안드로이드에서 화면을 구성하는 데 사용하는 요소
- 위젯 종류 중 View, ViewGroup 두 가지가 있다.
- ViewGroup은 View Container, Layout 두 가지로 나뉜다. Layout은 뷰를 배치하는 용도로 사용되고, ViewGroup에서 Layout을 빼고 나머지가 View Container 이다.
- 자주 사용하는 위젯 종류 : TextView, EditText, Button, ImageView, ImageButton, CheckBox, ToggleButton, Switch, RadioButton, ProgressBar, SeekBar, RatingBar, Spinner, DatePicker, TimePicker
2. TextView
- 사용자가 수정할 수 없는 텍스트를 표시하는 뷰이다. Asp.net의 Label과 유사하다.
- TextView는 View 클래스를 상속해서 만들어 졌다.
- Button이나 EditText 등이 TextView를 상속하고 있다. 위젯 중 가장 기본적인 뷰가 TextView이다.
- 속성
autoLink |
자동으로 링크를 걸어주는 속성이다. 전화번호나 이메일과 링크하면 전화를 걸거나 이메일을 보낼 수 있게 도와준다. 이 속성에는 phone(전화), email(이메일), web(웹페이지), all(모두), none(링크X) 값이 있다. |
text |
보여지는 텍스트를 정한다. /res/values/strings.xml에 문자열을 설정하여 사용하는 것이 좋다. |
textSize |
텍스트 크기를 지정한다. 가장 적합한 방법은 sp를 사용한 것으로, 해상도와 사용자가 지정한 글꼴 크기에 따라 텍스트 크기를 변경한다. |
textColor |
텍스트 색상이다. #AARRGGBB, #RRGGBB, #RGB 형식으로 작성이 가능하다. |
lines |
텍스트 뷰를 몇 줄로 표시할 건지를 나타낸다. |
- 메소드
getText() |
텍스트뷰가 보여주고 있는 문자열을 반환한다. |
setText(int resid) |
resid로 지정된 문자열을 텍스트뷰에 설정한다. |
setText(CharSequence text) |
text 문자열을 텍스트뷰에 설정한다. |
setTextColor(int color) |
지정된 color를 텍스트뷰의 색상으로 설정한다. |
setTextSize(float size) |
텍스트뷰의 문자열 크기를 설정한다. |
setOnClickListener(View.OnClickListener l) |
뷰를 클릭했을 때 호출될 콜백 메소드를 등록한다. |
setOnKeyListener(View.OnKeyListener l) |
뷰에서 키를 눌렀을 때 호출될 콜백 메소드를 등록한다. |
setOnLongClickListener(View.OnLongClickListener l) |
뷰를 길게 클릭했을 때 호출될 콜백 메소드를 등록한다. |
3. EditText
- 사용자에게 문자열이나 숫자 등을 입력받을 수 있는 위젯이다.
- TextView를 상속하고 있기 때문에 많은 부분이 비슷하다.
- 속성
gravity |
텍스트를 어느 쪽으로 배치할지 정한다. center, bottom, top 등이 있다. |
inputType |
사용자가 입력하려는 값의 형태를 정한다. text(문자열), number(숫자), phone(전화번호) 등이 있다. |
backgroundTint |
글자 아래 밑줄 색상을 정한다. |
hint |
사용자가 입력하기 전에 미리 보여지는 문자열이다. |
- 메소드
getText() |
에디트텍스트의 문자열을 반환한다. |
setOnKeyListener(View.OnKeyListener l) |
뷰에서 키를 눌렀을 때 호출될 콜백 메소드를 등록한다. |
onKey(View v, int keyCode, KeyEvent event) |
사용자가 누른 키를 감지한다. - v : 키가 눌린 위젯 - keyCode : 사용자가 누른 키 코드 - event : 키 이벤트 정보(눌렸는지, 눌렀다 놓아졌는지 등) |
4. Button
- 사용자가 손으로 클릭할 수 있는 모양의 위젯이다.
- 텍스트뷰 다음으로 가장 많이 사용되는 위젯 중 하나이다.
- 속성
backgroundTint |
버튼의 배경 색상을 지정한다. |
textAllCaps |
버튼의 영어 텍스트를 전부 대문자로 할지 정한다. |
textColor |
버튼 텍스트의 색상을 지정한다. |
text |
버튼에 보이는 텍스트를 설정한다. |
- 메소드
setOnClickListener(View.OnClickListener l) |
버튼을 클릭했을 때 호출될 콜백 리스너를 등록한다. |
setOnLongClickListener(View.OnLongClickListener l) |
버튼을 길게 클릭했을 때 호출될 콜백 리스너를 등록한다. |
onClick(View v) |
뷰를 클릭했을 때 호출된다. v는 클릭한 뷰를 의미한다. |
onLongClick(View v) |
뷰를 길게 클릭했을 때 호출된다. v는 클릭한 뷰를 의미한다. |
5. ImageView
- 이미지를 화면에 보여주기 위한 위젯이다.
- 이미지뷰는 View 클래스를 직접 상속해서 만들어졌다.
- 속성
background |
이미지뷰의 배경 색상을 정한다. @android로 시작하는 색상은 안드로이드에서 기본으로 제공하는 색상이다. /res/values/colors.xml 에 정의한 색상을 지정하고 싶다면 @color/red 처럼 작성하면 된다. |
scaleType |
이미지를 어떻게 보여줄 지 정한다. center, centerCrop, fitCenter 등의 값이 있다. |
src |
이미지를 지정한다. @drawable/android는 /res/drawable 디렉터리에 있는 이미지를 가리킨다. srcCompat 속성으로 벡터 이미지를 표현할 수 있다. |
- 메소드
getScaleType() |
이미지뷰의 스케일 타입을 반환한다. |
setScaleType(ImageView.ScaleType scaleType) |
이미지뷰에 스케일 타입을 설정한다. |
setImageResource(int resId) |
이미지뷰에 지정된 이미지 리소스를 설정한다. |
setImageBitmap(Bitmap bm) |
이미지뷰에 지정된 비트맵 이미지를 설정한다. |
setImageDrawable(Drawable drawable) |
이미지뷰에 지정된 Drawable 이미지를 설정한다. Drawable은 이미지처럼 그려지는 것들의 최상위 추상 클래스이다. |
6. ImageButton
- 버튼에 이미지를 표시할 수 있는 위젯이다.
- 이미지뷰와 모양만 다를 뿐 거의 유사하므로 특별히 다른 속성이나 메소드가 없다.
- 버튼과 거의 동일한 방법으로 클릭 이벤트를 처리할 수 있다.
7. CheckBox
- 사용자가 특정 항목을 선택할 수 있게 해주는 위젯이다.
- 사용자의 선택을 표시할 수 있는 위젯은 체크박스 외에도 라디오버튼, 스위치, 스피너 등 다양하게 존재한다.
- 상속 계층도를 보면 체크박스는 버튼을 기반으로 만들어졌다. 그런데 버튼을 직접 상속한게 아닌 CompoundButton을 상속한다. CompoundButton은 체크박스처럼 아이콘과 텍스트가 함께 조합되어 구성된 위젯을 처리하기 위한 클래스이다.
- 속성
text |
체크박스 모양 오른쪽에 나타나는 문자열을 지정한다. |
checked |
체크박스에 체크 표시를 할 것인지 말 것인지를 지정한다. true/false |
clickable |
사용자가 체크박스를 클릭할 수 있는지를 설정한다. true/false |
- 메소드
isChecked() |
체크 여부를 true/false로 반환한다. |
performClick() |
사용자가 뷰를 클릭한 것처럼, 뷰의 OnClickListener를 호출한다. |
setChecked(boolean checked) |
체크 상태를 설정한다. |
setOnCheckedChangeListener( CompoundButton.OnCheckedChangeListener listener) |
체크 상태의 변경을 감지하는 리스너를 등록한다. |
toggle() |
체크 상태를 반대로 변경한다. |
8. ToggleButton
- 사용자의 선택을 표시하는 위젯이다.
- 스위치처럼 누를 때마다 on/off를 변경하는 식으로 동작된다.
- 토글 버튼도 CompoundButton을 상속받고 있다.
- 속성
checked |
토글 버튼 켜짐/꺼짐 상태를 지정한다. true/false |
text |
의미 없는 속성이다. 상속은 했지만 토글 버튼에 적용되지 않는다. |
textOff |
토글 버튼이 꺼졌을 때 보여질 문자열을 지정한다. |
textOn |
토글 버튼이 켜졌을 때 보여질 문자열을 지정한다. |
- 메소드
getTextOff() |
선택되지 않았을 때 보여주는 텍스트를 반환한다. |
getTextOn() |
선택됬을 때 보여주는 텍스트를 반환한다. |
setChecked(boolean checked) |
체크 상태를 설정한다. |
setTextOff(CharSequence textOff) |
선택되지 않았을 때 보여주는 텍스트를 설정한다. |
setTextOn(CharSequence textOn) |
선택됬을 때 보여주는 텍스트를 설정한다. |
9. Switch
- 전원 스위치를 켰다가 끄듯이 동작하는 형태의 위젯이다.
- 아이콘을 왼쪽에서 오른쪽으로 옮기거나 반대로 옮기는 것으로 상태를 표시한다.
- 속성
checked |
스위치를 켜진/꺼진 상태로 표시할 지를 지정한다. true/false |
switchPadding |
텍스트와 스위치 사이의 간격을 지정한다. |
text |
스위치 옆에 보여줄 문자열을 지정한다. |
thumbTint |
원형 모양의 스위치 색상을 지정한다. |
trackTint |
원형 손잡이가 이동하는 경로의 색상을 지정한다. |
- 메소드
setChecked(boolean checked) |
스위치 상태를 설정한다. |
toggle() |
스위치 상태를 반대로 변경한다. |
10. RadioButton
- 사용자가 선택한 것을 표시하는 위젯이다.
- 라디오버튼은 반드시 컨테이너뷰인 라디오그룹(RadioGroup)과 함께 사용해야 한다.
- 라디오버튼도 CompoundButton 클래스로부터 상속받는다.
- 체크박스와 다른 점은 체크박스는 여러 개를 선택할 수 있지만, 라디오 버튼은 라디오 그룹 내의 여러 개의 라디오버튼 중 하나만 선택할 수 있게 되어있다.
- 속성
checked |
라디오버튼에 선택 표시를 할 것인지를 지정한다. true/false |
text |
라디오버튼에 보이는 문자열을 지정한다. |
buttonTint |
라디오버튼의 원 색상과 선택했을 때 보여지는 원 안의 색상을 변경한다. |
- 메소드
toggle() |
라디오버튼의 상태를 반대로 변경한다. |
11. ProgressBar
- 로딩 상태를 표시하는 용도로 사용된다.
- 프로그레스바는 두 가지 모양이 있다 : 원형 모양, 직선 모양
11-1. ProgressBar - 원형 모양(기본 형태)
- 프로그해스바의 기본 형태인 원형 모양이다.
- 원형은 진행 상태를 보여줄 수는 없기 때문에 '잠시만 기다려주세요'라는 의미로 많이 사용된다.
- 만약 오래 걸리거나 사용자에게 진행 상태를 보여주는 것이 낫다면 직선 모양의 프로그래스바를 쓰는 것이 좋다.
- 속성
style |
프로그레스바의 모양을 지정한다. 없으면 기본 모양이 사용된다. |
indeterminateTint |
프로그레스바의 색상을 지정한다. |
11-2. ProgressBar - 직선 모양
- 웹 페이지나 특정 데이터를 로딩할 때 진행 상태를 함께 표시하는 용도로 많이 사용된다.
- 오랜 시간동안 로딩이 일어날 때 사용하기 적합하다.
- 속성
style |
프로그레스바의 모양을 지정한다. @style/Widget.AppCompat.ProgressBar.Horizontal 이렇게 지정하면 직선 형태가 된다. |
max |
프로그레스바가 보여줄 수 있는 최대값을 지정한다. |
progress |
프로그레스바의 현재 진행 상태를 지정한다. 실제로는 자바 코드에서 설정하는 경우가 대부분이다. |
progressTint |
프로그래스바의 현재 진행 상태 바의 색상을 지정한다. |
progressBackgroundTint |
프로그래스바의 최대 진행 범위를 보여주는 바탕 부분의 색상을 지정한다. 지정한 색상보다 옅게 표시된다. |
- 메소드
getMax() |
프로그레스바가 표시할 수 있는 최대값을 반환한다. |
getMin() |
프로그레스바가 표시할 수 있는 최소값을 반환한다. |
getProgress() |
프로그레스바의 현재 진행 상태 값을 반환한다. |
incrementProgressBy(int diff) |
프로그래스바의 현재 진행 상태 값을 diff 만큼 증가시킨다. |
setMax() |
프로그래스바가 표시할 수 있는 최대 값을 설정한다. |
setMin() |
프로그래스바가 표시할 수 있는 최소 값을 설정한다. |
setProgress(int progress) |
프로그래스바의 현재 진행 상태 값을 설정한다. |
setSecondaryProgress(int secProgress) |
프로그래스바의 보조 진행 상태 값을 설정한다. |
12. SeekBar
- 특정 수치를 조절하는 용도로 사용하는 위젯이다.
- 대표적으로 음악의 볼륨을 조절하거나 숫자 값을 변경하는 용도로 사용된다.
- 직선 형태의 프로그래스바와 유사하게 보이나, 사용자가 수치 값을 조절할 수 있는 손잡이가 있다는 것이 다르다.
- 프로그래스바를 상속하는 AbsSeekBar를 상속하고 있다. AbsSeekBar는 시크바나 레이팅바와 같은 위젯들의 공통적인 특성을 가지고 있는 클래스이다.
- 속성
max |
시크바로 설정할 수 있는 최대 값을 설정한다. 시크바의 배경에 옅은 색으로 표시된다. |
progress |
시크바의 현재 상태를 설정한다. |
progressTint |
시크바의 현재 상태를 보여주는 직선 형태의 색상을 변경한다. |
progressBackgroundTint |
시크바에 보여지는 직선 형태의 배경 색상을 변경한다. |
secondaryProgress |
시크바의 권장 값을 설정한다. 대표적으로 이어폰을 낀 후 미디어 볼륨 정할 때 청각 보호를 위해 사용된다. |
secondaryProgressTint |
secondaryProgress로 설정한 값까지의 배경색을 지정한다. |
thumbTint |
시크바의 손잡이 색상을 지정한다. 설정하지 않을 경우 values/colors.xml 에 정의되어 있는 colorAccent의 값으로 설정된다. |
- 메소드
setMax(int max) |
시크바의 최대 값을 설정한다. |
setMin(int min) |
시크바의 최소 값을 설정한다. |
setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener l) |
시크바의 변경된 진행 상태를 받을 수 있는 콜백 리스너를 설정한다. |
onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) |
사용자가 시크바를 움직일 때 호출된다. seekBar : 시크바 객체, progress : 시크바의 상태 값, fromUser : 시크바를 사용자가 움직였는지 여부 |
onStartTrackingTouch(SeekBar seekBar) |
사용자가 시크바를 터치할 때 호출된다. |
onStopTrackingTouch(SeekBar seekBar) |
사용자가 시크바에서 손을 땔 때 호출된다. |
13. RatingBar
- 레이팅, 즉 평점을 표시하기 위한 위젯이다.
- 사용자는 별의 개수를 선택할 수 있으며, 내부적으로는 숫자 값으로 다뤄진다.
- 별의 갯수는 일반적으로 5개를 많이 사용하며, 반 개씩 or 한 개씩 선택하게 할 수 있다.
- 레이팅바 역시 프로그래스바를 상속하는 AbsSeekBar를 상속하고 있다.
- 속성
progressTint |
별의 색상을 설정한다. |
progressBackgroundTint |
별의 배경 색상을 설정한다. |
numStars |
화면에 표시될 전체 별의 개수를 설정한다. |
rating |
선택된 별의 개수를 지정한다. 초기값이라 생각하면 된다. |
stepSize |
사용자가 별을 선택할 수 있는 기본 단위를 설정한다. 0.5 : 별 반개, 1 : 별 한개. 0.1이나 0.7 처럼 설정하면 안된다. |
- 메소드
getNumStars() |
보여지는 별의 개수를 반환한다. |
getRating() |
채워진 별의 개수를 반환한다. |
getStepSize() |
별을 선택할 수 있는 개수를 반환한다. |
isIndicator() |
사용자가 변경할 수 없는 상태인지를 반환한다. |
setIsIndicator(boolean isIndicator) |
레이팅바를 사용자가 변경할 수 없게 할 것인지를 설정한다. |
setNumStars(int numStars) |
보여줄 별의 개수를 설정한다. |
setOnRatingBarChangeListener(RatingBar.OnRatingBarChangeListener l) |
레이팅바의 값이 변경되었을 때 호출할 콜백 리스너를 설정한다. |
setRating(float rating) |
지정된 값만큼 별을 채운다. |
setStepSize(float stepSize) |
별이 증가하는 값을 설정한다. |
onRatingChanged(RatingBar rBar, float rating, boolean fromUser) |
레이팅바가 변경되었을 때 호출된다. rBar : 레이팅바 객체, rating : 선택한 별의 개수, fromUser : 사용자가 선택하였는지. |
14. Spinner
- 사용자가 클릭했을 때, 여러 문자열을 보여주고 이를 선택할 수 있도록 해주는 위젯이다. (ComboBox, DropDownList 와 유사한 개념)
- 스피너는 ViewGroup을 상속해서 만들어진 위젯이다. 스피너를 제대로 이해하기 위해서는 AdapterView와 AbsSpinner 클래스를 함께 살펴봐야 한다.
- 속성
entries |
스피너에 보여줄 문자열 리스트를 설정한다. "@array/배열 이름" 식으로 설정하면 된다. |
background |
스피너의 배경 색상을 설정한다. |
popupBackground |
스피너에서 문자열 리스트가 보이는 화면의 배경색을 설정한다. |
spinnerMode |
스피너에 설정된 문자열을 어떻게 보여줄 지를 설정한다. dropdown, dialog가 있다. dropdown : 위에서 아래로 펼쳐지면서 보임(일반적인 콤보박스처럼), dialog : 문자열이 화면 중앙에 다이얼로그 박스 형태로 모두 보임. |
- 메소드
getCount() |
어댑터가 소유하고 있는 아이템 수를 반환한다. |
getItemAtPosition(int position) |
어댑터의 아이템 중에서 position에 해당하는 아이템을 반환한다. |
getSelectedItem() |
현재 선택된 아이템을 반환한다. |
getSelectedItemPosition() |
현재 선택된 아이템의 position을 반환한다. |
setOnClickListener(View.OnClickListener l) |
뷰를 클릭했을 때, 호출될 콜백 리스너를 반환한다. |
setOnItemClickListener(AdapterView.OnItemClickListener l) |
아이템을 클릭했을 때, 호출될 콜백 리스너를 반환한다. |
setOnItemLongClickListener(AdapterView.OnItemLongClickListener l) |
아이템을 길게 클릭했을 때, 호출될 콜백 리스너를 반환한다. |
setOnItemSelectedListener(AdapterView.OnItemSelectedListener l) |
아이템을 선택했을 때, 호출될 콜백 리스너를 반환한다. |
onItemClick(AdapterView<?> parent, View view, int position, long id) |
아이템을 클릭했을 때 호출되는 메소드이다. parent : 사용자가 클릭한 뷰, view : 클릭한 아이템 뷰, position : 클릭한 아이템의 위치, id : 클릭한 아이템의 아이디 |
onItemLongClick(AdapterView<?> parent, View view, int position, long id) |
아이템을 길게 클릭했을 때 호출되는 메소드이다. 파라미터는 위와 동일. |
onItemSelected(AdapterView<?> parent, View view, int position, long id) |
아이템을 선택했을 때 호출되는 메소드이다. 파라미터는 위와 동일. |
15. DatePicker
- 사용자에게 날짜를 보여주거나 선택할 수 있게 해주는 위젯이다.
15-1. DatePicker - 기본 형태
- 데이트피커는 기본적으로 달력 형태로 보여지며, 속성을 지정하여 스피너 형태로 보여지게 할 수도 있다.
- 실행되면 기본적으로 자동으로 현재 날짜가 보여진다.
- 월 부분의 값이 0~11로 이루어졌는데, 0 : 1월, ..., 11: 12월 이런 식으로 처리된다. 이 점 생각하고 get/set을 해야 한다.
- ViewGroup을 상속하는 FrameLayout을 상속해서 만들어졌다.
- 속성
datePickerMode |
데이트피커의 모양을 지정하는 속성이다. calendar, spinner 가 있다. calendar : 기본적인 달력. 지정하지 않으면 이 속성이 설정된다. spinner : 스피너 형태 달력. |
calendarViewShown |
spinner 형태일 때 달력을 보이지 않게 하려면 이 속성을 false로 설정해야 한다. |
- 메소드
init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener) |
데이트피커의 날짜를 설정하고, 변경을 감지하기 위한 콜백 리스너를 설정한다. |
updateDate(int year, int month, int dayOfMonth) |
지정된 값으로 데이트피커의 날짜를 변경한다. |
getDayOfMonth() |
일을 반환한다. |
getMonth() |
월을 반환한다. 0~11로 반환하므로 제대로 사용하려면 1을 더해야한다. |
getYear() |
년도를 반환한다. |
setOnDateChangedListener(DatePicker.OnDateChangedListener onDateChangedListener) |
사용자가 변경한 날짜를 감지하는 콜백 리스너를 설정한다. 안드로이드 API 26부터 지원한다. |
onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) |
날짜가 변경되면 호출된다. view : 데이트피커, year : 년도, monthOfYear : 월, dayOfMonth : 일 |
15-2. DatePicker - 다이얼로그 형태
- 데이트피커를 다이얼로그 형태로 사용할 수 있다.
- 생성자
DatePickerDialog(Context context) |
현재 날짜로 데이트피커 다이얼로그를 생성한다. 안드로이드 API 24부터 지원한다. |
DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener listener, int year, int month, int dayOfMonth) |
데이트피커 다이얼로그를 생성한다. context : 컨텍스트 객체, listener : 사용자가 날짜를 선택했을 때 호출될 콜백 리스너, year : 년도, month : 월, dayOfMonth : 일. |
16. TimePicker
- 사용자에게 시간을 보여주거나 선택할 수 있게 해주는 위젯이다.
16-1. TimePicker - 기본 형태
- 타임피커는 기본적으로 원형 시계 형태로 보이며, 스피너 형태로 보여지게 할 수도 있다.
- 데이트피커와 마찬가지로 타임피커도 ViewGroup을 상속하는 FrameLayout 기반으로 만들어졌다.
- 속성
timePickerMode |
타임피커의 형태를 지정하는 속성이다. clock, spinner 가능. clock : 시계 형태, spinner : 스피너 형태 |
- 메소드
getHour() |
시간을 반환한다. |
getMinute() |
분을 반환한다. |
is24HourView() |
24시간 모드인지를 반환한다. |
setHour(int hour) |
시간을 설정한다. |
setIs24HourView(Boolean is24HourView) |
시간 모드를 24시간으로 할 지, 12시간으로 할 지를 설정한다. |
setMinute(int minute) |
분을 설정한다. |
setOnTimeChangedListener(TimePicker.OnTimeChangedListener nTimeChangedListener) |
시간이 변경되었을 때, 호출될 콜백 리스너를 설정한다. |
onTimeChanged(TimePicker view, int hourOfDay, int minute) |
시간이 변경되면 호출된다. view : 타임피커, hourOfDay : 시간, minute : 분 |
16-2. TimePicker - 다이얼로그 형태
- 타임피커를 다이얼로그 형태로 사용할 수 있다.
- 생성자
TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener listener, int hourOfDay, int minute, boolean is24HourView) |
타임피커 다이얼로그를 생성한다. context : 컨텍스트 객체, listener : 사용자가 시간을 설정했을 때 호출될 콜백 리스너, hourOfDay : 시간, minute : 분, is24HourView : 24시간 형태로 표시할 지 |
17. Toolbar
- 사용자에게 다양한 기능을 쉽게 사용할 수 있도록 해주는 역할을 한다.
- 안드로이드 5.0(롤리팝, API 21)에 도입된 위젯이다.
- 툴바는 상단 또는 하단에 배치할 수 있는데, 상단에 배치된 툴바는 앱바(Appbar)라고 부르기도 한다.
- 앱바는 기본적으로 네비게이션 아이콘(Nav icon), 제목(Title), 필터 아이콘(Filter icon)을 가진다. 오른쪽에는 기능을 수행할 수 있는 액션 아이콘(Action icons)과 메뉴 아이콘(Menu icon)을 가진다. 메뉴 아이콘은 앱바에 보여주지 못한 액션 아이콘을 추가로 더 볼 수 있는 메뉴이다.
- 앱바를 사용하기 위해서는 앱의 build.gradle에 minSdkVersion을 21 이상으로 설정해야 한다. 하지만 하위 버전에서도 사용하고 싶다면, 앱의 build.gradle에 appcompat 라이브러리를 추가해야 한다.
- implementation 'com.android.support:appcompat-v7:27.1.1'
- 속성
background |
툴바의 백그라운드 색상을 지정하는 속성입니다. @color/~~~ 형식으로 /res/values/colors.xml에 지정한다. |
navigationIcon |
네비게이션 아이콘을 설정한다. @mipmap/~~~ 형식으로 /res/values/mipmap 디렉터리에 이미지로 지정한다. |
logo |
로고를 설정한다. @android로 시작하는 리소스는 안드로이드에서 기본 제공하는 리소스이다. |
title titleTextColor |
제목과 제목 색상을 지정한다. |
subtitle subtitleTextColor |
부제목과 부제목 색상을 지정한다. |
- 앱바를 보여주고 싶다면 상단 기본 액션바를 제거해야 한다. 제거하지 않으면 에러가 발생한다.
- 제거하려면 res/values/styles.xml에 테마를 설정해야 한다.
- windowActionBar를 false로 설정하고, windowNoTitle을 true로 설정해야 한다.
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
- 설정되었으면 AndroidManifest.xml 파일 안에 android:theme="@style/AppTheme.NoActionBar" 이렇게 변경해서 사용하면 된다.
- 자바 코드를 짤 때 Toolbar 클래스를 반드시 android.support.v7.widget.Toolbar를 선택해야 한다. 그렇지 않고 android.widget.Toolbar를 선택하면 에러가 발생한다.
- 디테일한 기능들은 개발할 때 구글 찾아보면서 하면 된다.
[출처] 한동호, '나의 첫 안드로이드 : 처음 시작하는 개발자를 위한', 한빛미디어, 2018
'안드로이드-나의 첫 안드로이드' 카테고리의 다른 글
7. 안드로이드 뷰 컨테이너 살펴보기 (0) | 2019.03.14 |
---|---|
6. 안드로이드 레이아웃 살펴보기 (0) | 2019.03.12 |
4. 액티비티 살펴보기 (0) | 2019.03.06 |
3.5. 코드 작성 요령 (0) | 2019.03.06 |
3.3. 로그 추가하기 (0) | 2019.03.05 |