๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[์•ˆ๋“œ๋กœ์ด๋“œ] ์–ด๋Š ํ™”๋ฉด์—์„œ๋‚˜ ๋™์ผํ•˜๊ฒŒ ๋””์ž์ธ ๊ฐ€์ด๋“œ ์œ ์ง€ํ•  TabItem ์†์„ฑ

 

๊ณผ๊ฑฐ ํƒญ ์•„์ด์ฝ˜์œผ๋กœ ์ด๋ฆฌ์ €๋ฆฌ ์‚ฝ์งˆํ•˜๊ณ  ํ–‰๋ณตํ•˜๊ฒŒ ์›ํ•˜๋˜ ๋Œ€๋กœ ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค.

2021.09.09 - [๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ] - [Android] TabLayout, TabItem ์›ํ•˜๋Š” UI ๋งŒ๋“ค๊ธฐ

 

๊ทธ๋ฆฌ๊ณ  ์ด์Šˆ๊ฐ€ ๋‚˜์™”๋‹ค. ๊ฐค๋Ÿญ์‹œ ํด๋“œ ๋‹จ๋ง์—์„œ๋Š” ๋””์ž์ธ ๊ฐ€์ด๋“œ๋Œ€๋กœ ํƒญ ์•„์ด์ฝ˜๋“ค์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฑฐ์˜€๋‹ค.

 

ํ–‰๋ณตํ–ˆ๋˜ ๋•Œ

 

์ž ๊น ํ–‰๋ณต์ด ๊นจ์กŒ์—ˆ๋‹ค

 

TabLayout์˜ ์„ค์ •๊ฐ’ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์„ ๋ฐฐ๋‹˜์˜ ๋ง์”€์„ ํžŒํŠธ๋กœ ๋ฐ›์•„๋“ค์ด๊ณ  ๊ฒ€์ƒ‰ํ•ด์„œ ์ฐพ์•˜๋‹ค.

 

์€์ธ : https://jeonghoe9.tistory.com/28

 

TabLayout์˜ Tabํฌ๊ธฐ ๊ท ๋“ฑ๋ถ„ํ• (?)

์˜ค๋Š˜์€ TabLayout(com.google.android.material.tabs.TabLayout)์„ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ Tab ๊ฐฏ์ˆ˜๊ฐ€ TabLayout์˜ width ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋‹ˆ Tab์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ฒŒ ๋ณด์ด๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ. ์˜ค๋Š˜๋„ ์ธํ„ฐ๋„ท์„ ๋’ค์ ธ์„œ ์ „์ฒด ํฌ๊ธฐ๋กœ ๋ฐ”๊พธ๋Š”..

jeonghoe9.tistory.com

 

 

 

๋‹ค์‹œ ์ฐพ์€ ํ–‰๋ณต

 

TabLayout์— ์ถ”๊ฐ€ํ•œ ์†์„ฑ

app:tabGravity="fill"
app:tabMaxWidth="0dp"
app:tabMode="fixed"

 

app:tabGravity="fill"

ํƒญ๋“ค์„ ๋ฐฐ์น˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” gravity๋ฅผ GRAVITY_FILL๋กœ ์„ค์ •ํ–ˆ๋‹ค.

GRAVITY_FILL > TabLayout์„ ์ตœ๋Œ€ํ•œ ์ฑ„์šฐ๋Š” gravity์ด๋‹ค. 600dp ๋ฏธ๋งŒ์˜ ๋„ˆ๋น„๋ฅผ ๊ฐ€์ง„, ๊ฐ€๋กœ๊ฐ€ ์•„๋‹Œ ํ™”๋ฉด์—์„œ  MODE_FIXED์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ์ง€ ๋จนํžŒ๋‹ค.


app:tabMaxWidth="0dp"

์ด ์นœ๊ตฌ๋ฅผ 0dp๋กœ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค๊ณ ๋งŒ ๋งํ•˜๋Š” ๋ธ”๋กœ๊ทธ ๊ธ€๋“ค์€ ์žˆ๋Š”๋ฐ, ์™œ ๊ทธ๋Ÿฐ์ง€ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๊ธ€์€ ๋ชป ์ฐพ์•˜๋‹ค. ์™œ ๊ทธ๋Ÿฐ์ง€ ๊ถ๊ธˆํ•ด์„œ TabLayout์˜ ์ฝ”๋“œ ์ข€ ์‚ดํŽด๋ณด์•˜๋‹ค.

app:tabMaxWidth์— ์„ค์ •ํ•œ ๊ฐ’์ด requestTabMaxWidth์— ์ฐธ์กฐ๋œ๋‹ค.
INVALID_WIDTH ๊ฐ’์€ -1

requestTabMaxWidth์— tabMaxWidth์œผ๋กœ ์„ค์ •ํ•œ ๋„ˆ๋น„ ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค. tabMaxWidth์— ์„ค์ •ํ•œ ๊ฐ’์ด ์—†๋‹ค๋ฉด requestTabMaxWidth๋Š” -1์ด ๋œ๋‹ค.

 

TabLayout์˜ onMeasure. requestTabMaxWidth๊ฐ€ ๋“ฑ์žฅํ•˜๋Š” ๋ถ€๋ถ„

requestTabMaxWidth ๊ฐ’์ด 0๋ณด๋‹ค ํฐ์ง€ ์—ฌ๋ถ€๋กœ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋˜์–ด tabMaxWidth ๊ฐ’์ด ๊ฒฐ์ •๋œ๋‹ค.

 

TabView์˜ onMeasure

TabView์˜ onMeasure์—์„œ geTabMaxWidth()๋กœ TabLayout์˜ tabMaxWidth ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋˜์–ด tab item์˜ ๊ฐ€๋กœ ์˜์—ญ์ด ์ •ํ•ด์ง€๋Š” ๋“ฏํ•˜๋‹ค.

 


app:tabMode="fixed"

ํƒญ๋“ค์„ MODE_FIXED ๋ชจ๋“œ๋กœ ์›€์ง์ด๋„๋ก ์„ค์ •ํ–ˆ๋‹ค. ๋ชจ๋“  ํƒญ๋“ค์ด ํ™”๋ฉด์— ํ•œ ๋ฒˆ์— ๋ชจ๋‘ ๋ณด์ด๊ฒŒ ํ•œ๋‹ค. ์ตœ๋Œ€ ํƒญ ์ˆ˜๋Š” ํ™”๋ฉด์˜ ๋„ˆ๋น„์— ๋”ฐ๋ผ ์ •ํ•ด์ง„๋‹ค. ๊ฐ ํƒญ๋“ค์€ ๋„ˆ๋น„๊ฐ€ ๋™์ผํ•˜๋‹ค.