[Android] Autosize Text (not use setAutoSizeTextType())

๐Ÿ‘ปยท2022๋…„ 5์›” 26์ผ
0

Android

๋ชฉ๋ก ๋ณด๊ธฐ
5/11
post-thumbnail

๐Ÿ“Œ ๊ฐœ์š”

  1. View์˜ ํฌ๊ธฐ๋Š” ์œ ๋™์ ์œผ๋กœ ๋ณ€ํ•œ๋‹ค.
  2. ์œ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” View์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ํ…์ŠคํŠธ ์‚ฌ์ด์ฆˆ๋ฅผ ๋งž์ถฐ ๋ณด์—ฌ์ค˜์•ผ ํ•œ๋‹ค.
  3. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” setAutoSizeTextTypeUniformWithConfiguration์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.
    • ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์™ ๋งŒํ•œ ๋ฐฉ์‹์œผ๋กœ ๋‹ค ํ•ด๋ดค๋Š”๋ฐ ์†Œ์šฉ์ด ์—†๋‹ค.
    • ์•„๋ž˜ ๋งํฌ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ํ™ˆํŽ˜์ด์ง€์˜ autosizing textview ์‚ฌ์šฉ์— ๊ด€ํ•œ ๋‚ด์šฉ์ด๋‹ค.
    • https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview

๋”ฐ๋ผ์„œ "์ง€์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 26.0์€ Android 8.0(API ์ˆ˜์ค€ 26) ์ด์ „์˜ Android ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๊ธฐ"๊ฐ€ ์•„๋‹Œ ๊ธฐ๊ธฐ์—์„œ๋Š” ๋”ฐ๋กœ AutoSize๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

์•ˆ๋œ๋‹ค๋Š” ํŒ์ •์ด ๋‚  ๋•Œ ๊นŒ์ง€ ์‚ฝ์งˆ ์—„์ฒญํ–ˆ๋‹ค ๐Ÿ˜‚


๐Ÿ“Œ ํ•ด๊ฒฐ๋ฐฉ์•ˆ

1. ๋””์Šคํ”Œ๋ ˆ์ด ๋ฐ€๋„ ๋ฐ˜ํ™˜

  • ํ˜„์žฌ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋””์Šคํ”Œ๋ ˆ์ด ์ „์ฒด์— ๋Œ€ํ•œ ๊ฒƒ์ด ์•„๋‹Œ ๋ ˆ์ด์•„์›ƒ์˜ ํŠน์ • View์˜ ์‚ฌ์ด์ฆˆ์— ๋Œ€ํ•œ ํ…์ŠคํŠธ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด density๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
    float density = getResources().getDisplayMetrics().density;

2. ํ…์ŠคํŠธ ์‚ฌ์ด์ฆˆ ๊ณ„์‚ฐ

  • ๋””์Šคํ”Œ๋ ˆ์ด ๋ฐ€๋„๋กœ ํ…์ŠคํŠธ ์‚ฌ์ด์ฆˆ ๊ณ„์‚ฐ์„ ํ•˜๋ ค๋ฉด ์‚ฌ์šฉํ•  ๊ธ€์ž์˜ ๊ธธ์ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ์•„๋ž˜ ๊ณ„์‚ฐ์‹์€ ์˜ค๋กœ์ง€ ๊ฐ€๋กœ ์‚ฌ์ด์ฆˆ์—๋งŒ ๋งž์ถ”๋Š” ๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.
  • ์˜คํ†  ์‚ฌ์ด์ฆˆ = (๋””์Šคํ”Œ๋ ˆ์ด์˜ ๊ฐ€๋กœ ์‚ฌ์ด์ฆˆ) / (ํ™”๋ฉด ๋ฐ€๋„) / (ํ…์ŠคํŠธ ๊ฐ€๋กœ ๊ธธ์ด)
    float autoTextSize = (float) control_width / density / textMaxLength;

์ด์ œ ์ € autoTextSize๋ฅผ TextView์— ์ ์šฉ์‹œํ‚ค๋ฉด
View ์‚ฌ์ด์ฆˆ์— Text ํฌ๊ธฐ๋ฅผ ๊ฝ‰์ฑ„์›Œ์„œ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋œ๋‹ค.

profile
Software Developer

0๊ฐœ์˜ ๋Œ“๊ธ€