Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Yunster's 개인 공부 공간

5. 안드로이드 기본 위젯 살펴보기 본문

안드로이드-나의 첫 안드로이드

5. 안드로이드 기본 위젯 살펴보기

yunster 2019. 3. 7. 16:38

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

Comments