본문 바로가기
안드로이드 스튜디오

안드로이드 스튜디오: 에센셜 UI

by 질서정연_ 2020. 8. 13.

TextView 

LinearLayout의 자식 뷰 

text: 글을 쓰는 속성

textclolr:글씨의 색을 정해주는 속성

디자인 탭에서 속성들을 알 수 있다. -> all atribute를 선택하면 속성들이 나온다.

textsize -> 글씨 크기 설정 속성

컨트롤+스페이스 -> 이 텍스트 뷰가 가질 수 있는 속성들이 쫙 나온다. 

background -> 글씨의 배경색

 

Layout: 부모 뷰 컨포넌트가 될 수 있는 것들

 

부모컴포넌트는 화면에 나오지않고 화면의 구성을 정함.  배치시키고..

textview같은 자식으로만 사용하는 애들은 어떻게든 화면에 나오게 되고 배치를 정할 수 없다. 

텍스트뷰의 속성으로 자리를 옮길 수 없음. 

LinearLayout에 의해서 textView의 위치가 정해진 것임. 

oriental - vertical 과 hori어쩌고 -> 자식들을 수직 수평으로 배열

즉 부모 컴포넌트는 자식뷰의 위치를 정한다. 

 

텍스트뷰가 리니어레이아웃의 자식으로 있으면 생기는 속성이 있음. 

layoutgravity 임. 리니어레이아웃이 부모뷰로 있기 때문에 사용할 수 있는 속성임. center 가운데 위치 이동 가능 

부모가 gravity를 쓰면 모든 자식들이 위치이동을 한다. 

같은 기능 속성이 중복적용될때는 범위가 작은쪽이 적용된다. 

match_parent :부모에 꽉 맞추겠다. 부모가 차지하는 영역만큼 나도 차지하겠다. 최상위 뷰=부모 뷰.리니어레이아웃 뷰

리니어 레이아웃의 match_parent : 휴대폰의 가로폭을 모두 사용하겠다. 핸드폰의 총 가로길이

wrap_content:내 내용물을 감쌀 크기만큼만 크기로 하겠다. 

 

gravity: 텍스트뷰가 가진 컨텐트를 어디로 보낼지, 네모 안에서 글자가 이동. 

layout_gravity: 부모클래스 기준으로 내가 어디로 갈지

 

android:gravity="center|right" :가운데 이면서 오른쪽. 두가지 속성 모두 적용

 

layout_weight -> 얘가 차지할 비율을 적어줌

android:layout_weight="1" 텍스트 뷰 세개가 1:1:1 비율로 맞춰짐

그래서 보통 weight가 정해진 속성은 width는 0dp로 둔다. 

 

<TextView
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="0dp"
android:text="300"
android:background="#FF7979"/>

얘는 세로로 비율 1:1:1로 맞춰줌. 세로일때 layout_height -> 0dp, 가로일때 layout_width -> 0dp

 

android:weightSum="5" 전체 비율을 말함. 즉 가로 길이를 5등분.. 5등분 중 1을 차지하는 거임. LinearLayout에 적으면 됨

 

리니어 레이아웃 : 자식을 수평 수직으로 어떻게 배치할지

레러티브:자식의 위치를 상대적으로 배치

 두가지 기준. 부모가 기준. 특정 한 뷰 기준. 부모기준 오왼상하, 뷰 기준 오왼상하

 

자동완성 parent -> 부모 기준으로 움직일 수 있는 방법

<TextView
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@color/colorAccent"
android:layout_alignParentLeft="true" />

 

 

<TextView
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@color/colorPrimary"
android:layout_centerHorizontal="true" />

 

//현재위치 뷰의 수평의 중심으로 간다.

 

id는 모든 뷰가 가지는 속성. id를 정해줘야 구분이 간다.

to방향of

 

centerVertical = 'true' 중간으로 보냄

키워드 :

above->위

blow->아래

toLeftOf="+id/five" 5번의 왼쪽

 

텍스트 뷰에 마진을 주게되면 부모 뷰로부터 마진 준 만큼 떨어진다. 

<TextView
android:layout_marginTop="20dp"
android:layout_marginLeft="50dp"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="안녕하세요"
android:background="@color/colorAccent"/>

 

패딩은 자식 뷰 기준으로 어떻게 떨어트릴지. 네모 안쪽 글자를 어떻게 떨어트릴지

내용물을 안으로 움직임. 마진은 부모기준(바깥)

margin=200dp -> 상하좌우 다 마진 동시에

 

<FrameLayout>

뷰의 부모역을 하는 컨테이너 뷰. 

프레임 레이아웃 자식 뷰들을 겹치게 할 수 있음

제일 먼저 적은게 밑으로 간다.  

 

리니어 레이아웃 안의 자식뷰들은 절대 겹칠 수 없음

레러티브 레이아웃 안의 자식뷰들도 겹칠 수 있음 

프레임레이아웃써라 

레러티브레이아웃이 더 시간 오래 걸림. 

 

<ScrollView>

말 그대로 스크롤 하는 뷰 컴포넌트

스크롤뷰는 자식을 하나만 가질 수 있음. 

자식뷰를 리니어레이아웃이나 다른 뷰로

스크롤바 넣고싶지 않다면 scrollbars = "none"

fillViewport = "true"

 

<ImageView>

이미지를 보여주는 뷰 컴포넌트 

 

소스에 경로를 적어주면 이미지가 나온다

경로->골벵이 골벵이 넣고 경로 적어주기

이미지 저장은 drawable 폴더 밑에 넣기. 

고해상도 저해상도? 픽셀대신 dp썼는데.. 이미지는 어케하지?

이미지를 보여줄 때는 크기지정. ex)300dp

문제점.. 고해상도 이미지가 구린폰에서 오래걸림. 해결법?

같은 이미지이지만 해상도 별로 같은 이미지 여러세트 준비.

같은 이미지라고 해서 이미지를 세트별로 만들어야하나?

그럴때 해결법. 돋보기 or 쉬프트쉬프트

drawble이라는 폴더 밑에 이미지를 저장할거임. 

플러그인스는 안드로이드 스튜디오에 기능 더하는.

 

android:layout_gravity="center_vertical"

android:textStyle="bold"/>

 

 

android:scaleType="centerCrop"

 

 

android:fillViewport="true"

스크롤뷰에 이거 넣어주기

 

android:gravity="center_vertical"

 

FrameLayout쓰기

 

drawable 로 이미지 파일을 직접 만들 수도 있음 

<shape..

<stroke..

댓글