💡 tip
크기 설정에 dp(density-independent pixel) 단위를 사용하면 기기의 해상도에 맞춰 자동으로 픽셀값을 조정해줌
sp: 텍스트 크기 지정 단위
💡 tip
하드코딩을 피해 유지보수가 쉽도록 작성하는 법
- colors.xml 밸류 리소스 파일 이용해 텍스트뷰 색상 한 번에 지정 가능
[app] ➡️ [res] ➡️ [values] ➡️ [colors.xml]
colors.xml<color name="colorMain">#000000</color> <color name="colorSub">#25A632</color>
- colors.xml 아래의 string.xml 파일에서는 텍스트 지정 가능
strings.xml<string name="greeting">Hi</string>
- 적용할 xml 파일에서 android:text="@string/greeting"와 android:textColor="@color/colorMain"으로 텍스트와 색상 지정
activity_learning_views.xml<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".LearningViews"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/greeting" android:textColor="@color/colorMain" android:textSize="20sp" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".LearningViews">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/greeting"
android:textColor="@color/colorMain"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ailen" />
<ImageView
android:id="@+id/ailen"
android:layout_width="wrap_content"
android:layout_height="450dp"
android:src="@drawable/ailen"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/text"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
📚 속성값
firCenter
- 가로, 세로 중 한 방향으로 이미지뷰의 센터를 기준으로 스케일
- 이미지뷰의 크기를 바꿔도 여백이 어디 생기느냐의 문제임
(원본 사진의 비율은 그대로 유지)fitXY
- 가로, 세로 방향으로 이미지가 이미지뷰를 빈틈없이 가득 채움
- 이미지뷰의 크기를 바꾸면 원본 사진의 비율도 바뀜
center
- 스케일 없이 원본 이미지를 가운데 표시
- 이미지 원본의 크기가 이미지뷰보다 크면 이미지가 잘림
centerCrop
- 이미지 비율은 그대로 유지한 상태로 스케일
- 이미지 원본의 크기가 이미지뷰보다 크면 경계에 먼저 닿는 쪽의 튀어나온 부분을 잘라서 보여줌
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Hello라고 입력해주세요."
android:padding="10dp"
android:layout_margin="10dp"/>
LearningViews.kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class LearningViews : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_learning_views)
}
}
activity_learning_views.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".LearningViews">
<ImageView
android:id="@+id/ailen"
android:layout_width="wrap_content"
android:layout_height="450dp"
android:scaleType="fitCenter"
android:src="@drawable/ailen"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/text"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/greeting"
android:textColor="@color/colorMain"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ailen" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Hello라고 입력해주세요."
android:padding="10dp"
android:layout_margin="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text" />
</androidx.constraintlayout.widget.ConstraintLayout>
