λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
βœ’οΈ Android/Android Studio

[Android] 11. λ ˆμ΄μ•„μ›ƒ : λ·°(View)와 속성

by A Lim Han 2023. 1. 8.

# λ ˆμ΄μ•„μ›ƒ : λ·°(View)와 μ†μ„±

 

 

# λ ˆμ΄μ•„μ›ƒ : λ·°(View)

 

- λ·°(View)

: View 크래슀의 μ„œλΈŒν΄λž˜μŠ€λ‘œ λ§Œλ“  객체둜, μ•‘ν‹°λΉ„ν‹° 화면은 ν•œ 개 μ΄μƒμ˜ 뷰둜 κ΅¬μ„±λœλ‹€.

 

+ λ·°λŠ” 크게 λ ˆμ΄μ•„μ›ƒκ³Ό μœ„μ ―μœΌλ‘œ λ‚˜λ‰˜μ–΄μ§„λ‹€.

μœ„μ ―(Widget) λ ˆμ΄μ•„μ›ƒ(Layout)
λ²„νŠΌ, 이미지 등이 ν™”λ©΄μ—μ„œ μ‚¬μš©λ˜λŠ” κ²ƒμœΌλ‘œ, λ·° λ˜λŠ” ViewGroup의 μ„œλΈŒν΄λž˜μŠ€λ‘œμ„œ λ‹¨λ…μœΌλ‘œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€ λ‹€λ₯Έ μœ„μ ―μ„ λ‹΄μ•„ λ°°μΉ˜ν•˜λŠ” ν‹€λ‘œ, μ—¬λŸ¬ 개의 λ·°λ₯Ό κ·œμΉ™λŒ€λ‘œ 화면에 λ°°μΉ˜ν•  수 μžˆλ‹€.

 

 

: λ·° 클래슀 계측도

 

 

 

 

# λ ˆμ΄μ•„μ›ƒ : λ·°(View)의 속성

 

- View 클래슀의 XML 속성_id 속성

: id μ†μ„±μ˜ 경우 λͺ¨λ“  μœ„μ ―μ˜ 아이디λ₯Ό λ‚˜νƒ€λ‚΄λ©°, ν„°μΉ˜ μ‹œ νŠΉμ • λ™μž‘μ΄ ν•„μš”ν•œ 경우 idλ₯Ό μ§€μ •ν•œλ‹€.

-->  일반적인 id 속성은 μœ„μ ―μ— 아이디λ₯Ό μƒˆλ‘œ λΆ€μ—¬ν•˜λŠ” κ°œλ…μœΌλ‘œ, '@+id/'의 ν˜•μ‹μ„ λ”°λ₯Έλ‹€. ( /의 λ’€μ—λŠ” μƒˆλ‘œ μ €μž₯ν•  id μž‘μ„± )

 

ex 1) λ²„νŠΌ μœ„μ ―μ˜ id둜 button1 λΆ€μ—¬

Line 10 μ£Όλͺ©_activity_main.xml
Line 12 ~ 13 μΆ”κ°€_MainActivity.kt

 

+ λ²„νŠΌμ˜ XML 속성은 거의 μ‘΄μž¬ν•˜μ§€ μ•Šμ§€λ§Œ,  μƒμœ„ 클래슀인 View, TextView μ—μ„œ 상속받을 수 있음

 

+ Kotlin μ½”λ“œμ—μ„œ λ²„νŠΌ λ“±μ˜ μœ„μ ―μ— μ ‘κ·Όν•  λ•Œμ—λŠ” id 속성에 μ§€μ •ν•œ 아이디λ₯Ό μ‚¬μš©ν•œλ‹€.

// μœ„μ ― λ³€μˆ˜ = findViewById<μœ„μ ―ν˜•>(R.id.μœ„μ ―id)

var button1 : Button
button1 = findViewById<Button>(R.id.button1)

 

 

 

- View 클래슀의 XML 속성_layout_width, layout_height 속성

: λͺ¨λ“  μœ„μ ―μ— ν•„μˆ˜λ‘œ λ“€μ–΄κ°€λŠ” μ†μ„±μœΌλ‘œ, layout_width의 κ²½μš°λŠ” λ²„νŠΌμ˜ λ„ˆλΉ„λ₯Ό, layout_height의 κ²½μš°λŠ” λ²„νŠΌμ˜ 높이에 λŒ€ν•΄ μ μš©λ”˜λ‹€.

 

+ μ†μ„±μ˜ κ°’μœΌλ‘œλŠ” μ•„λž˜ 3가지 선택지가 μžˆλ‹€.

wrap_content λ²„νŠΌμ˜ λ„ˆλΉ„ 및 높이가 κ·Έ μ•ˆμ˜ κΈ€μžμ™€ λ”± λ§žλŠ” 크기둜 λ³€ν•œλ‹€
match_parent λ²„νŠΌμ˜ κΈ€μžμ™€ 상관없이 λ²„νŠΌμ„ 감싸고 μžˆλŠ” λΆ€λͺ¨(λ ˆμ΄μ•„μ›ƒ)에 λ”± μ°¨λŠ” 크기둜 λ°”λ€œ
값을 숫자둜 직접 지정 dp (Density-Independent Pixels), sp(Scale-Independent Pixels)

 

 

ex 1) layout_width, layout_height μ†μ„±μ˜ XML μ½”λ“œ 1

<LinarLayout
		~~~ μƒλž΅ ~~~ >
        <Button
        	android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="λ²„νŠΌμž…λ‹ˆλ‹€" />
</LinearLayout>

 

ex 2)

 

ex 3)

 

 

 

- View 클래슀의 XML 속성_background 속성

: 뷰의 λ°°κ²½κ³Ό μœ„μ ―μ˜ 색상을 μ§€μ •ν•˜λŠ” μ†μ„±μœΌλ‘œ, 주둜 #RRGGBB κ°’μœΌλ‘œ μ§€μ •ν•œλ‹€.

 

+ μ—¬κΈ°μ„œ R, G, BλŠ” 각각 빨간색, μ΄ˆλ‘μƒ‰, νŒŒλž€μƒ‰μ„ λ‚˜νƒ€λ‚΄λ©° RR, GG, BB의 μœ„μΉ˜λŠ” 16μ§„μˆ˜λ‘œ ν‘œν˜„ν•  수 μžˆλ‹€

 

 

ex 1) background 색을 μ΄ˆλ‘μƒ‰μœΌλ‘œ λ³€κ²½

λ³€κ²½ μ „_activity_main.xml
Line 14 μΆ”κ°€_μ’ŒμΈ‘μ„ 톡해 μ΄ˆλ‘μƒ‰μœΌλ‘œ 변경됨을 확인

 

ex 1) Line 7을 μΆ”κ°€ν•˜μ—¬ background 색을 λΉ¨κ°„μƒ‰μœΌλ‘œ λ³€κ²½

 

 

 

- View 클래슀의 XML 속성_margin 속성

: μ™ΈλΆ€ μ—¬λ°±, 즉 뷰와 λΆ€λͺ¨ λ·° μ‚¬μ΄μ˜ 곡간을 μ‘°μ •ν•˜λŠ” μ†μ„±μœΌλ‘œ, ν•΄λ‹Ή 여백은 λ·° μžμ‹ μ˜ μ˜μ—­μ— ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 μœ μ˜ν•΄μ•Ό ν•œλ‹€.

 

+ λΆ€μ—¬ κ°€λŠ₯ν•œ λ§ˆμ§„ 속성

XML 속성 κΈ°λŠ₯
layout_margin 상, ν•˜, 쒌, 우 λ„€ λ°©ν–₯의 λ§ˆμ§„ 지정
layout_marginTop μœ„μͺ½ λ§ˆμ§„ 지정
layout_marginBottom μ•„λž˜μͺ½ λ§ˆμ§„ 지정
layout_marginLeft 쒌츑 λ§ˆμ§„ 지정
layout_marginRight 우츑 λ§ˆμ§„ 지정

 

 

ex 1) Line 16 μΆ”κ°€ν•˜μ—¬ λ§ˆμ§„ 속성 λΆ€μ—¬ν•˜κΈ°

 

 

 

- View 클래슀의 XML 속성_νŒ¨λ”©(Padding) 속성

: λ‚΄λΆ€ μ—¬λ°±, 즉 뷰와 뷰의 λ‚΄μš©λ¬Ό μ‚¬μ΄μ˜ 곡간을 μ‘°μ •ν•˜λŠ” μ†μ„±μœΌλ‘œ, λ§ˆμ§„ μ†μ„±κ³ΌλŠ” 달리 ν•΄λ‹Ή 여백은 λ·° μžμ‹ μ˜ μ˜μ—­μ— ν¬ν•¨λœλ‹€.

 

+ λΆ€μ—¬ κ°€λŠ₯ν•œ νŒ¨λ”© 속성

XML 속성 κΈ°λŠ₯
padding 상, ν•˜, 쒌, 우 λ„€ λ°©ν–₯의 νŒ¨λ”© 지정
paddingTop μœ„μͺ½ νŒ¨λ”© 지정
paddingBottom μ•„λž˜μͺ½ νŒ¨λ”© 지정
paddingLeft μ™Όμͺ½ νŒ¨λ”© 지정
paddingRight 였λ₯Έμͺ½ νŒ¨λ”© 지정

 

 

ex) Line 17을 μΆ”κ°€ν•˜μ—¬ νŒ¨λ”© 속성 μ μš©ν•˜κΈ°

 

 

 

- View 클래슀의 XML 속성_visibility 속성

: μœ„μ ―μ΄ 보일 κ²ƒμΈμ§€μ˜ μ—¬λΆ€λ₯Ό κ²°μ •ν•˜λŠ” 속성

visible λ””ν΄νŠΈ κ°’μœΌλ‘œ, λ³΄μ΄λŠ” μƒνƒœ
invisible 보이지 X, μ›λž˜μ˜ 자리 μœ μ§€
gone 보이지 X, μ›λž˜μ˜ μžλ¦¬κΉŒμ§€ 사라짐

 

 

ex 1) Line 29 μˆ˜μ •ν•˜μ—¬ button 2에 'gone' 속성 λΆ€μ—¬ν•˜κΈ°

 

ex 1) Line 19 μˆ˜μ •ν•˜μ—¬ button 1에 'invisible' 속성 λΆ€μ—¬ν•˜κΈ°

 

 

 

- View 클래슀의 XML 속성_enabled, clickable 속성

: enabled, clickable 은 각각 μœ„μ ―μ˜ λ™μž‘ 여뢀와 클릭 및 ν„°μΉ˜ λ™μž‘ 여뢀에 λŒ€ν•œ μ†μ„±μœΌλ‘œ, true와 false 값을 κ°€μ§ˆ 수 μžˆλ‹€.

-->  두 속성 λͺ¨λ‘ λ””ν΄νŠΈ 값은 true이며, XML μ—μ„œλ³΄λ‹€ Kotlin μ½”λ“œμ—μ„œ 주둜 μ‚¬μš©λœλ‹€λŠ” νŠΉμ§•μ΄ μžˆλ‹€.

 

ex 1) Line 31 μˆ˜μ •ν•˜μ—¬ button2의 enabled 속성에 'false' κ°’ λΆ€μ—¬ν•˜κΈ°

 

ex 2) Line 62λ₯Ό μˆ˜μ •ν•˜μ—¬ button5의 clickable 속성에 'false' κ°’ λΆ€μ—¬ν•˜κΈ°