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

[Android ์•ฑ๊ฐœ๋ฐœ ์ž…๋ฌธ] ๋ ˆ์ด์•„์›ƒ (# ์ถ”๊ฐ€ํ•˜๊ธฐ)

by ์ ผ์ ผ39 2024. 3. 19.

๋ ˆ์ด์•„์›ƒ

    : ViewGroup์˜ ํŒŒ์ƒ ํด๋ž˜์Šค. ํฌํ•จ ๋œ View๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ธฐ๋Šฅ

 

1. Linear Layout : ์ปจํ…Œ์ด๋„ˆ์— ํฌํ•จ ๋œ(์ž์‹) ๋ทฐ๋“ค์„ ์ˆ˜ํ‰ ๋˜๋Š” ์ˆ˜์ง์œผ๋กœ ์ผ๋ ฌ ๋ฐฐ์น˜ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ

        - ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ณ  ์ง๊ด€์ , ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์Œ
        - LinearLayout์˜ ์ž์‹์œผ๋กœ ๋ฐฐ์น˜๋˜๋Š” View ์œ„์ ฏ๋“ค์€ ํ•œ ๋ฐฉํ–ฅ(๊ฐ€๋กœ ๋˜๋Š” ์„ธ๋กœ)๋กœ๋งŒ ๋ฐฐ์น˜
        - ์œ„์ ฏ์˜ ํฌ๊ธฐ(๋†’์ด ๋˜๋Š” ๋„ˆ๋น„)์™€ ๊ด€๊ณ„์—†์ด ํ•œ ์ค„๋กœ๋งŒ ๋ฐฐ์—ด
        - LinearLayout์˜ ์ž์‹๋“ค์€ ์ค‘์ฒฉ๋˜์ง€ ์•Š๊ณ , ์ง€์ •ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์Œ“์ด๋Š” ํ˜•ํƒœ๋กœ ํ‘œ์‹œ๋จ
        - LayoutWeight : ์ž์‹๋“ค์ด ๋ฐฐ์น˜๋  ๋•Œ, ์ „์ฒด ์˜์—ญ ๋Œ€๋น„ ๋น„์œจ์˜ ๊ฐœ๋…์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ค‘์น˜(weight)๋ฅผ ์„ค์ •

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...>
    <LinearLayout
        ...
        android:layout_weight="1"  				//์—ฌ๊ธฐ[1]์™€
        android:orientation="vertical"
        ...>
        <Button ...
            android:text="Button 1"/> />
        <Button
            ...
            android:text="Button 2" />
        <Button
            ...
            android:layout_weight="1" 			//์–˜๊ฐ€ ๋‚˜๋จธ์ง€๋ฅผ ๊ฝ‰ ์ฑ„์šฐ๋Š” ๊ฒƒ
            android:text="Button 3"
            
        />
    </LinearLayout>
    <LinearLayout
        ...
        android:layout_weight="1"  				//์—ฌ๊ธฐ[1] ๋•Œ๋ฌธ์— 1:1์ด ๋จ 
        android:orientation="horizontal"
        ...>
        <Button
            ...
            android:text="Button 4"/>
        <Button
            ...
            android:text="Button 5"/>
        <Button
            ...
            android:text="Button 6"/> 		//weight์— ๋Œ€ํ•œ ์†์„ฑ์„ ์ฃผ์ง€ ์•Š์•„ ๋™์ผํ•œ ์‚ฌ์ด์ฆˆ
    </LinearLayout>
</LinearLayout>

        *์ฃผ์š” ์†์„ฑ
        1) orientation : vertical(์ฐจ์ผ๋“œ๋ฅผ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ˆ˜์ง์œผ๋กœ ๋ฐฐ์—ด) / horizontal(์ฐจ์ผ๋“œ๋ฅผ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆ˜ํ‰๋ฐฐ์—ด)

 

2. Relative Layout : ๋ทฐ๋ฅผ ์„œ๋กœ ๊ฐ„์˜ ์œ„์น˜ ๊ด€๊ณ„๋‚˜ ์ปจํ…Œ์ด๋„ˆ์™€์˜ ์œ„์น˜ ๊ด€๊ณ„๋ฅผ ์ง€์ •ํ•ด ๋ฐฐ์น˜ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ

        - ์ž์‹ view ์œ„์ ฏ๋“ค์ด ์„œ๋กœ๊ฐ„์˜ ์ƒ๋Œ€์  ๋ฐฐ์น˜ ๊ด€๊ณ„์— ๋”ฐ๋ผ ํ™”๋ฉด์— ํ‘œ์‹œ๋  ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋˜๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” Layout ํด๋ž˜์Šค
            //ex. B๋ฅผ A์˜ ์˜ค๋ฅธ์ชฝ์— ๋ฐฐ์น˜ : B toRight Of A, D๋ฅผ C์˜ ์•„๋ž˜์ชฝ์— ๋ฐฐ์น˜ : D below C
        - ๋ถ€๋ชจ ์ž์ฒด๊ฐ€ ์ƒ๋Œ€์  ์œ„์น˜์˜ ๊ธฐ์ค€์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ์Œ
            // ex. A๋ฅผ RelativeLayout์˜ ์™ผ์ชฝ์— ์ •๋ ฌ : alignParentLeft, B๋ฅผ RelativeLayout์˜ ๊ฐ€์šด๋ฐ ์ •๋ ฌ : centerInParent
        - ์ž์‹๋“ค์— ์ƒ๋Œ€์ ์ธ ๋ฐฐ์น˜ ๊ธฐ์ค€์„ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, RelativeLayout ๋‚ด๋ถ€์—์„œ ์ค‘์ฒฉ๋˜์–ด ํ‘œ์‹œ๋จ

        * ์ฃผ์š” ์†์„ฑ
        1) ์œ„์ ฏ๋ผ๋ฆฌ์˜ ๊ด€๊ณ„๋ฅผ ์ง€์ •ํ•˜๋Š” ์†์„ฑ (anchor view์˜ id๋ฅผ ์ง€์ •)

์†์„ฑ ์„ค๋ช…
layout_alignBaseline anchor view์™€ baseline์„ ๋งž์ถค
layout_alignBottom / _alignTop anchor view์™€ ์•„๋ž˜์ชฝ / ์œ„์ชฝ ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ๋งž์ถค
layout_alignLeft / _alignRight anchor view์™€ ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ๋งž์ถค
layout_Above / _Below anchor view์˜ ์œ„์ชฝ / ์•„๋ž˜์ชฝ์— ๋ฐฐ์น˜
layout_toLeft / _toRight anchor view์˜ ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ์— ๋ฐฐ์น˜

        2) Parent์™€์˜ ๊ด€๊ณ„๋ฅผ ์ง€์ •ํ•˜๋Š” ์†์„ฑ

์†์„ฑ ์„ค๋ช…
layout_centerHorizontal ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฐ€์šด๋ฐ ๋ฐฐ์น˜
layout_centerVertical ์ˆ˜์ง ๋ฐฉํ–ฅ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฐ€์šด๋ฐ ๋ฐฐ์น˜
layout_centerInParent ??
layout_alignParentLeft / Right ์ปจํ…Œ์ด๋„ˆ์™€ ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ๋งž์ถค
layout_alignParentBottom / Top ์ปจํ…Œ์ด๋„ˆ์™€ ์•„๋ž˜์ชฝ / ์œ„์ชฝ ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ๋งž์ถค
<RelativeLayout ...>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 1"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:id="@+id/button1"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/button1" 		//1๋ฒˆ์˜ ์™ผ์ชฝ์œผ๋กœ
        android:text="Button 2"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/button1" 			//1๋ฒˆ์˜ ์•„๋ž˜๋กœ
        android:layout_alignParentRight="true"
        android:text="Button 3"/>
</RelativeLayout>

 

3. Table Layout : ํ‘œ ํ˜•์‹์œผ๋กœ ์ฐจ์ผ๋“œ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ

        - ์ž์‹ View ์œ„์ ฏ๋“ค์„ ํ…Œ์ด๋ธ”(ํ–‰๊ณผ ์—ด)๋กœ ๋‚˜๋ˆ„์–ด ํ‘œ์‹œํ•˜๋Š” Layout ํด๋ž˜์Šค

        - ํ‘œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ–‰์˜ ๊ฐœ์ˆ˜๋งŒํผ TableRow๋ฅผ ํฌํ•จํ•˜๊ณ  TableRow๋Š” ๊ฐ ํ–‰์— ํฌํ•จ๋œ ์…€(view)๋ฅผ ํฌํ•จํ•จ

        *์ฃผ์š” ์†์„ฑ
        - stretchColumns : ๋Š˜๋ฆด ์—ด์„ ์ง€์ • (์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘๋จ)
            1) "*" : ๋ชจ๋“  ์—ด์„ ๋Š˜์—ฌ์„œ ๋ฐฐ์น˜
            2) "1, 2" : 1์—ด(์™ผ์ชฝ์—์„œ 2๋ฒˆ์งธ)๊ณผ 2์—ด(์™ผ์ชฝ์—์„œ 3๋ฒˆ์งธ)์„ ๋Š˜์—ฌ์„œ ๋ฐฐ์น˜

        - TableRow -> ์ •ํ•ด์ง„ ๊ทœ์น™์— ๋”ฐ๋ผ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜๋ฏ€๋กœ, layout_width / height๋ฅผ ์ง€์ •ํ•  ํ•„์š” ์—†์Œ
                // layout_height ๋Š” ํ•ญ์ƒ wrap_content, layout_width ๋Š” ํ•ญ์ƒ match_parent

<TableLayout
    ...
    android:stretchColumns="0"
    ...>
    <TableRow>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button 4"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button 5"/>
    </TableRow>
    <TableRow
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button 6"/>
    </TableRow>
</TableLayout>

 

4. Frame Layout : ์ปจํ…Œ์ด๋„ˆ์— ํฌํ•จ๋œ ๋ทฐ๋“ค์„ ์ „๋ถ€ ์ขŒ์ƒ๋‹จ์— ๋ฐฐ์น˜ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ

        - ํ•˜๋‚˜์˜ ์ž์‹ view ์œ„์ ฏ๋งŒ ํ‘œ์‹œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” Layout ํด๋ž˜์Šค (ex. ์˜์ƒ ๋„์šฐ๊ธฐ ๋“ฑ)
        - FrameLayout์— ์ž์‹์œผ๋กœ ์—ฌ๋Ÿฌ View ์œ„์ ฏ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ฒน์ณ์ง„ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ๋˜๊ณ ,
                ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ View ์œ„์ ฏ์ด ๊ฐ€์žฅ ์œ„์— ํ‘œ์‹œ๋จ

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="#ff0000">
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="button 7"/>
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="button 8"/>
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="button 9"/>
</FrameLayout>

 

5. Constraint Layout : ์ œ์•ฝ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•ด ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

        - ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๋‹จ์ˆœํ•œ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ViewGroup์ž„

        - ํ˜•์ œ view๋“ค๊ณผ์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•ด ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•œ๋‹ค๋Š” ์ ์—์„œ RelativeLayout๊ณผ ์œ ์‚ฌ
        - but ๋” ์œ ์—ฐํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

        (+) ์ž์‹ ๋ทฐ๊ฐ„์˜ ์ƒํ˜ธ ๊ด€๊ณ„ ์ •์˜ ๊ฐ€๋Šฅ (RelativeLayout์—์„  ๋ถˆ๊ฐ€๋Šฅ -ex. ๋‘ view๋ฅผ ์œ„์•„๋ž˜๋กœ ๋ถ™์—ฌ ์ปจํ…Œ์ด๋„ˆ ์ค‘์•™์—)
        (+) LinearLayout์„ ์จ์•ผ ํ–ˆ๋˜ ๋ทฐ ๋น„์œจ ์กฐ์ ˆ๋„ ๊ฐ€๋Šฅ
        (+) ๋ทฐ ๊ณ„์ธต์„ ๊ฐ„๋‹จํžˆ ํ•  ์ˆ˜ ์žˆ์–ด ์œ ์ง€๋ณด์ˆ˜, ์„ฑ๋Šฅ์—์„œ ์žฅ์ 

 

    1) ์œ„์ ฏ์˜ ํฌ๊ธฐ ์„ค์ •

        (1) ๋ฆฌ์‚ฌ์ด์ฆˆ ํ•ธ๋“ค ์ด์šฉํ•ด ์„ค์ •

            - ์œ„์ ฏ ํด๋ฆญ ์‹œ ๋„ค ๊ผญ์ง“์ ์— ์‚ฌ๊ฐํ˜•์˜ ํ•ธ๋“ค์ด ์ƒ๊น€, ๋งˆ์šฐ์Šค๋กœ ๋“œ๋ž˜๊ทธํ•ด ํฌ๊ธฐ ์„ค์ •
            - ๋“œ๋ž˜๊ทธํ•ด์„œ ํฌ๊ธฐ ์กฐ์ ˆ ์‹œ ์šฐ์ธก ์†์„ฑ์ฐฝ์˜ Layout_width, Layout_height์˜ ๋ฐ•์Šค๋ฅผ ์ž…๋ ฅํ•ด ์„ค์ • ๊ฐ€๋Šฅ

        (2) ์ง์ ‘ ๊ฐ’์„ ์ž…๋ ฅํ•ด ์„ค์ •

            - ์œ„์ ฏ ํด๋ฆญ ์ˆ˜ ์šฐ์ธก ์†์„ฑ์ฐฝ์—์„œ layout_width, layout_height๋ฅผ ์ž…๋ ฅํ•ด ํฌ๊ธฐ ์„ค์ • ๊ฐ€๋Šฅ
            - ์ˆ˜์น˜ ์™ธ์— wrap_content, match_parent๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

    2) ์œ„์ ฏ์˜ ์ƒ๋Œ€์ ์ธ ์ •๋ ฌ

        - ์‚ฌ์ด๋“œํ•ธ๋“ค(์œ„์ ฏ์˜ ๊ฐ ๋ณ€์˜ ๊ฐ€์šด๋ฐ)์„ ์ด์šฉํ•ด ์œ„์ ฏ์ด ๋‹ค๋ฅธ ์œ„์ ฏ ๋˜๋Š” ํ™”๋ฉด์˜ ๊ฒฝ๊ณ„์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ •๋ ฌ๋ ์ง€ ์ง€์ • ๊ฐ€๋Šฅ
        - ์ขŒ์šฐ์˜ ํ•ธ๋“ค : ๊ฐ€๋กœ์ถ•์— ์žˆ๋Š” ์œ„์ ฏ๋“ค ๊ฐ„์˜ ์ •๋ ฌ ์„ค์ •, ์ƒํ•˜์˜ ํ•ธ๋“ค : ์„ธ๋กœ์ถ• ๊ฐ„์˜ ์ •๋ ฌ์„ ์„ค์ •
        - ์ขŒ์šฐ ํ•ธ๋“ค์„ ์ƒํ•˜ ํ•ธ๋“ค์— ์—ฐ๊ฒฐํ•  ์ˆ˜๋Š” ์—†์Œ
        - ์œ„์ ฏ, ํ™”๋ฉด์˜ ๊ฐ ๊ฒฝ๊ณ„, ์ž„์˜๋กœ ์ถ”๊ฐ€๋œ ์ˆ˜์ง, ์ˆ˜ํ‰์˜ ๊ฐ€์ด๋“œ ๋ผ์ธ๊ณผ์˜ ์ •๋ ฌ ์„ค์ • ๊ฐ€๋Šฅ
        - ๋“œ๋ž˜๊ทธ, ์šฐ์ธก ์†์„ฑ์ฐฝ์˜ ์ˆ˜์น˜ ๋“ฑ์„ ํ†ตํ•ด ์„ค์ • ๊ฐ€๋Šฅ

    3) ์œ„์ ฏ ๋‚ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ํ…์ŠคํŠธ์˜ ์œ„์น˜๋กœ ์ •๋ ฌ๊ธฐ์ค€ ์„ค์ •ํ•˜๊ธฐ

        - ๋ฒ ์ด์Šค๋ผ์ธ ํ•ธ๋“ค
            : ์œ„์ ฏ์— ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ์ขŒ์ธก ํ•˜๋‹จ์— ๋‚˜ํƒ€๋‚˜๋Š” ab ์•„์ด์ฝ˜ ํด๋ฆญ
                -> ์œ„์ ฏ์˜ ํƒ์ŠคํŠธ ํ•˜๋‹จ์— ๋ฐฐ์ด์Šค ๋ผ์ธ ํ•ธ๋“ค์ด ๋ณด์ž„
                -> ๋ฒ ์ด์Šค๋ผ์ธ ํ•ธ๋“ค์„ ํด๋ฆญํ•ด ๋‹ค๋ฅธ ์œ„์ ฏ์˜ ํ…์ŠคํŠธ์— ์—ฐ๊ฒฐ -> ์—ฐ๊ฒฐ๋œ ์œ„์ ฏ์€ ํ…์ŠคํŠธ์˜ ํ•˜๋‹จ์ด ์ผ์น˜๋˜๋„๋ก ์ •๋ ฌ๋จ

    4) constraint ํˆด๋ฐ” ์‚ฌ์šฉํ•˜๊ธฐ

        (1) Autoconnect (๋ง๊ตฝ์ž์„) : ์ผœ๋‘๋ฉด ์œ„์ ฏ์„ ๋ฐฐ์น˜ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ด์›ƒํ•œ ์œ„์ ฏ๊ณผ ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์คŒ

        (2) Clear All Constraints (์—ฐ๊ฒฐ x ๋ชจ์–‘) : ๋ชจ๋“  ๊ด€๊ณ„๋ฅผ ์‚ญ์ œํ•จ

        (3) Infer constraints (๋งˆ๋ฒ•์ง€ํŒก์ด ๋ชจ์–‘) : ๋ ˆ์ด์•„์›ƒ ๋‚ด ๋ฐฐ์น˜๋œ ๋ชจ๋“  ์œ„์ ฏ์„ ํ˜„์žฌ ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๊ณ„ ๋งบ์–ด์คŒ

        (4) Default Margins (8) : ์œ„์ ฏ ๊ฐ’์˜ ๊ธฐ๋ณธ ๋งˆ์ง„ ๊ฐ’์„ ์ง€์ •

        (5) Guidelines (๋ณด์กฐ์„ ) : ์ˆ˜ํ‰, ์ˆ˜์ง ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์œ„์ ฏ์„ ์ด ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ ๊ฐ€๋Šฅ 

    5) ์†์„ฑ์ฐฝ

        (1) Margin (๋ฒฝ๊ณผ ์‚ฌ๊ฐํ˜• ์‚ฌ์ด) : layout_width ๊ฐ€ match_constraint์ด๋ฉด ์—ฌ๋ฐฑ์œผ๋กœ ์„ค์ •ํ•œ ๊ฐ’ ์ œ์™ธ ์ „์ฒด๋ฅผ ์œ„์ ฏ์ด ์ฐจ์ง€

        (2) Aspect Ratio (์‚ฌ๊ฐํ˜• ์ขŒ์ธก ์ƒ๋‹จ) : ํด๋ฆญ ์‹œ ์œ„์ ฏ์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ๋น„์œจ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ

        (3) Wrap Content (>>>) : ๋ถ€๋“ฑํ˜ธ 3๊ฐœ๋กœ ๋œ ๋ชจ์–‘์€ wrap_content๋กœ ์ง€์ •๋œ ๊ฒƒ

        (4) Any size (ww) : ํ†ฑ๋‹ˆ๋ชจ์–‘์€ ์ตœ๋Œ€ํ•œ์˜ ๋„ˆ๋น„๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋˜๊ณ , match_constraint๋กœ ์ง€์ •๋˜์–ด ์žˆ์Œ

        (5) ์ ์„  (...) : ์•„์ง ๊ด€๊ณ„๊ฐ€ ์—†์Œ

        (6) Horizontal Bias (ํ•˜๋‹จ์˜ ์„ ๊ณผ ์› ์† ์ˆซ์ž) : ์œ„์ ฏ์˜ ์ขŒ์šฐ์ธก ์œ„์น˜ ๋น„์œจ์„ ์ง€์ •, ๋“œ๋ž˜๊ทธํ•ด์„œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ