<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>moon_nal07.log</title>
        <link>https://velog.io/</link>
        <description>개발 공부</description>
        <lastBuildDate>Sun, 16 Jul 2023 13:32:25 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. moon_nal07.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/moon_nal07" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Android] xml 레이아웃(2) - Linear Layout]]></title>
            <link>https://velog.io/@moon_nal07/Android-xml-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%832-Linear-Layout</link>
            <guid>https://velog.io/@moon_nal07/Android-xml-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%832-Linear-Layout</guid>
            <pubDate>Sun, 16 Jul 2023 13:32:25 GMT</pubDate>
            <description><![CDATA[<h2 id="⬛-linear-layout">⬛ Linear Layout</h2>
<blockquote>
<p>linear layout은 view를 수평(horizontal) 혹은 수직(vertical)방향으로 배치할 수 있는 레이아웃이다. orientation 속성을 사용하여 배치 방향을 정할 수 있다.</p>
</blockquote>
<p><strong>android:orientation = &quot;vertical&quot;</strong>: 하위 뷰들을 <strong>수직</strong>방향으로 배치<strong>android:orientation = &quot;horizontal&quot;</strong>: 하위 뷰들을 <strong>수평</strong>방향으로 배치</br></p>
<h3 id="◼-layout-weight">◼ Layout weight</h3>
<p>Linear Layout은 android:layout_weight 속성을 사용하여 각각의 자식들에게 가중치(weight)을 할당하는것을 지원한다. 이 속성은 view가 화면에서 얼마만큼의 공간을 차지하느냐에 따라 중요도 값을 할당한다.</br></p>
<p><strong>android:layout_weight = &quot;1&quot;</strong> : 1이 들어가는 위치에 큰 숫자가 들어갈 수록 가중치가 커진다. 기본 가중치(default)는 0이다.</br></p>
<h4 id="◾-균등-분포">◾ 균등 분포</h4>
<p>각 하위 요소가 화면에서 동일한 크기의 공간을 사용하는 선형 레이아웃을 생성하려면, 각 view의 android:layout_height를 0dp로 설정한다(horizontal인 경우). 그런 다음 각 뷰의 android:layout_weight를 1로 설정한다.</br></p>
<h4 id="◾-비균등-분포">◾ 비균등 분포</h4>
<p>하위 요소가 화면에 다른 크기의 공간을 사용하는 Linear Layout을 생성할 수 있다.
(예시)
3개의 text field가 있다. 그 중 2개의 가중치를 1로 선언하고, 다른 하나의 가중치는 지정하지 않을 경우, 세번째 text field는 확장되지 않는다. 다만, 세번째 text field가 필요한 영역만 차지하게 된다.(나머지 2개의 text field는 균등하게 남은 공간을 채우도록 확장된다.)</br></br></p>
<h3 id="◼-layout-gravity">◼ Layout gravity</h3>
<p>Linear Layout은 android:gravity 속성을 사용하여 모든 하위 뷰에 대한 중력 방향(배치 방향)을 결정한다. 반면 android:layout_gravity 속성은 해당 group view에 속하는 하위 view들이 가지는 속성으로, view group의 gravity속성에 의해 결정된 원래 자신 위치에서의 중력 방향(배치 방향)을 결정한다.</br></br></br></p>
<hr>
<h2 id="⬛-실습">⬛ 실습</h2>
<p>Linear Layout을 사용해 간단한 레이아웃을 구성해보았다.
(비균등 분포, gravity, edit text, button 사용)</br></p>
<h3 id="palette">[Palette]</h3>
<p><img src="https://velog.velcdn.com/images/moon_nal07/post/a15b646a-d6f5-4a39-b19c-21df7e7290d7/image.png" alt=""></p>
<h3 id="code">[Code]</h3>
<p><img src="https://velog.velcdn.com/images/moon_nal07/post/f5723ca4-77aa-4b1b-b254-45e0e42b003b/image.png" alt=""></p>
<h3 id="◼-코드-설명">◼ 코드 설명</h3>
<ul>
<li><p><strong>layout_height, layout_width</strong>
모든 view 들은 아래의 속성이 있어야만 한다.</p>
<blockquote>
<p>  <strong>android:layout_width=&quot;match_parent&quot;
android:layout_height=&quot;wrap_content&quot;</strong></p>
</blockquote>
<ul>
<li><strong>match_parent</strong> : 부모의 길이에 맞춘다. view의 경우, view를 감싸고 있는 레이아웃의 width와 height에 맞춰진다. 보통 match_parent는 <strong>&quot;너비, 혹은 높이가 화면 전체 길이&quot;</strong> 를 의미한다.</li>
<li><strong>wrap_content</strong> : view에 입력할 글자 혹은 이미지 크기에 맞게 설정 된다.</br>


</li>
</ul>
</li>
</ul>
<ul>
<li><strong>Edit Text</strong><ul>
<li><strong>android:hint</strong> : edit text에 어떤 형식이나 값을 입력하라고 알려주는 가이드글</li>
<li><strong>android:importantForAutofill</strong> : 자동완성을 사용할 것인지 사용하지 않을 것인지 정한다</li>
<li><strong>android:inputType</strong> : 입력 타입을 지정한다.(ex. text, number,...)</li>
</ul>
</li>
</ul>
<blockquote>
<p>참고
<a href="https://developer.android.com/develop/ui/views/layout/linear?hl=en">https://developer.android.com/develop/ui/views/layout/linear?hl=en</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Android] xml 레이아웃(1) - View & ViewGroup]]></title>
            <link>https://velog.io/@moon_nal07/Android-xml-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%83-Linear-Layout</link>
            <guid>https://velog.io/@moon_nal07/Android-xml-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%83-Linear-Layout</guid>
            <pubDate>Sun, 16 Jul 2023 10:24:11 GMT</pubDate>
            <description><![CDATA[<h3 id="1-뷰와-뷰-그룹이란-view-and-viewgroup">1. 뷰와 뷰 그룹이란? (View and ViewGroup)</h3>
<p>레이아웃은 앱에서 사용자 인터페이스를 위한 구조(ex.활동)을 정의한다. 레이아웃의 모든 요소는 <strong>View</strong>와 <strong>ViewGroup</strong> 객체의 계층 구조를 사용하여 빌드 된다. 일반적으로 View는 사용자가 보고 상호작용할 수 있는 것들을 그린다. 반면, ViewGroup은 레이아웃 구조를 정의하는 보이지 않는 부분을 담는 containter다.</br></p>
<p><img src="https://velog.velcdn.com/images/moon_nal07/post/c1b1bcfe-af04-4430-9fc3-1fb88c855af7/image.png" alt=""></p>
<p><strong>View (widget)</strong> : 사용자가 볼 수 있고, 상호작용(터치) 할 수 있는 요소
<strong>ViewGroup (layout)</strong> : 레이아웃 구조를 정의하는 containter역할</br></p>
<p>View라 부리는 위젯(widget)들은 View 클래스를 상속받아 만들어진다. 그리고 ViewGroup이라고 불리는 레이아웃들은 ViewGroup클래스를 상속받아 만들어진다. 그런데, ViewGroup클래스는 View클래스를 상속 받고 있다. 따라서 ViewGroup역시 일종의 View이기 때문에 View와 함께 ViewGroup안에 배치될 수 있다.</br></p>
<h3 id="2-뷰-종류-view-type">2. 뷰 종류 (View type)</h3>
<p>안드로이드 스튜디오 IDE를 살펴보면 xml Design Editor의 Palette에서 사용 가능한 view 목록을 확인할 수 있다.</br></p>
<p><img src="https://velog.velcdn.com/images/moon_nal07/post/7c228aea-f760-419e-8f65-a79c1ad68135/image.png" alt=""></p>
<p><strong>TextView
Button
ImageView
RecyclerView
FragmentContainterView
ScrollView
Switch
...</strong>
</br></p>
<h3 id="3-뷰-그룹-종류-viewgroup-type">3. 뷰 그룹 종류 (ViewGroup type)</h3>
<p><strong>LinearLayout</strong>(선형 레이아웃) : 가로 또는 세로의 단일 방향으로 모든 하위 요소를 정렬하는 뷰 그룹
<strong>ConstraintLayout</strong>(제약,제한,조건 레이아웃) : 상대 위치에 따라 유연한 방식으로 위젯의 위치와 크기를 지정하는 뷰 그룹 (Android JetPack 지원)
<strong>RelativeLayout</strong>(상대적 레이아웃) : 상대위치에 하위의 뷰를 표시하는 뷰 그룹
<strong>GridLayout</strong>(그리드 레이아웃) : 자식을 직사각형 그리드에 배치하는 뷰그룹
<strong>FrameLayout</strong>(프레임 레이아웃) : 단일 항목을 표시하기 위해 화면의 영역을 차단하도록 설계한 뷰 그룹
<strong>TableLayout</strong>(테이블 레이아웃) : 자신의 하위 요소를 행과 열에 배치하는 뷰그룹
<strong>...</strong>
</br></p>
<p>위의 뷰와 뷰 그룹 종류들은 이후 실습으로 직접 구현하면서 알아볼 예정이다.</p>
<blockquote>
<p>참고
<a href="https://developer.android.com/develop/ui/views/layout/declaring-layout">https://developer.android.com/develop/ui/views/layout/declaring-layout</a></p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>