스크롤 뷰 구현하다가 하루가 다 가버렸다..
constraint layout으로 했다가 스크롤뷰를 전체 감싸려니 자꾸 흩어지고 에러가 떴다. 안에 Horizontal ScrollView가 중첩되어 있기도 해서 더 복잡하게 느껴졌다. 튜터님께 질문도 해보고 알아보면서 영역을 따로따로 constraint layout으로 감싸주고 그 위를 linearlayout으로, 또 그 위를 scrollview로 했더니 성공!
코드가 너무 길어서 include로 재사용 가능하게 만들어야겠다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="vertical"
tools:context=".FeedActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_logo"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginStart="24dp"
android:layout_marginTop="32dp"
android:scaleType="fitXY"
android:src="@drawable/tastory_logo_simple"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/iv_btn_mypage"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="24dp"
android:background="@android:color/white"
android:scaleType="fitXY"
android:src="@drawable/btn_mypage"
app:layout_constraintBottom_toBottomOf="@+id/tv_welcome"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_welcome"
app:layout_constraintTop_toTopOf="@+id/tv_welcome" />
<TextView
android:id="@+id/tv_welcome"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:gravity="right"
android:text=""
android:textSize="18dp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/iv_logo"
app:layout_constraintEnd_toStartOf="@+id/iv_btn_mypage"
app:layout_constraintStart_toEndOf="@+id/iv_logo"
app:layout_constraintTop_toTopOf="@+id/iv_logo" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="32dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_history"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="히스토리"
android:textColor="@color/brown"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<HorizontalScrollView
android:id="@+id/sv_horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_history"
android:layout_marginTop="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_pizza"
android:layout_width="110dp"
android:layout_height="130dp"
android:layout_marginStart="16dp"
android:scaleType="centerCrop"
android:src="@drawable/pizza" />
<ImageView
android:id="@+id/iv_cake"
android:layout_width="110dp"
android:layout_height="130dp"
android:layout_marginStart="8dp"
android:scaleType="centerCrop"
android:src="@drawable/cake" />
<ImageView
android:id="@+id/iv_chicken"
android:layout_width="110dp"
android:layout_height="130dp"
android:layout_marginStart="8dp"
android:scaleType="centerCrop"
android:src="@drawable/chicken" />
<ImageView
android:id="@+id/iv_ramen"
android:layout_width="110dp"
android:layout_height="130dp"
android:layout_marginStart="8dp"
android:scaleType="centerCrop"
android:src="@drawable/ramen" />
<ImageView
android:id="@+id/iv_noodle"
android:layout_width="110dp"
android:layout_height="130dp"
android:layout_marginStart="8dp"
android:scaleType="centerCrop"
android:src="@drawable/noodle" />
<ImageView
android:id="@+id/iv_pork"
android:layout_width="110dp"
android:layout_height="130dp"
android:layout_marginStart="8dp"
android:scaleType="centerCrop"
android:src="@drawable/pork" />
</LinearLayout>
</HorizontalScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_feed"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_account"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:src="@drawable/account"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_chopa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="쵸파"
android:textColor="@color/brown"
android:textSize="18dp"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@+id/iv_account"
app:layout_constraintTop_toTopOf="@+id/iv_account" />
<TextView
android:id="@+id/tv_time1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="3시간 전"
app:layout_constraintBottom_toBottomOf="@+id/iv_account"
app:layout_constraintStart_toEndOf="@+id/iv_account"
app:layout_constraintTop_toBottomOf="@+id/tv_chopa" />
<ImageView
android:id="@+id/iv_steak2"
android:layout_width="0dp"
android:layout_height="220dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:scaleType="centerCrop"
android:src="@drawable/steak"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_account" />
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:text="크리스마스 추천 맛집!"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_steak2" />
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:text="벌써 2023년 연말이 다가왔습니다~! \n크리스마스와 연말을 맞아 가족 혹은 연인과 함께 방문하기 좋은 맛집을 소개해 드릴게요."
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_feed2"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_account2"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:src="@drawable/account"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_duckman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="덕만"
android:textSize="18dp"
android:textStyle="bold"
android:textColor="@color/brown"
app:layout_constraintStart_toEndOf="@+id/iv_account2"
app:layout_constraintTop_toTopOf="@+id/iv_account2" />
<TextView
android:id="@+id/tv_time2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="5시간 전"
app:layout_constraintBottom_toBottomOf="@+id/iv_account2"
app:layout_constraintStart_toEndOf="@+id/iv_account2"
app:layout_constraintTop_toBottomOf="@+id/tv_duckman" />
<ImageView
android:id="@+id/iv_makchang2"
android:layout_width="0dp"
android:layout_height="220dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:scaleType="centerCrop"
android:src="@drawable/makchang"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_account2" />
<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:text="서울 막창 맛집을 소개합니다~"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_makchang2" />
<TextView
android:id="@+id/textView4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:text="을지로 주변에 가신다면 꼭 한 번 가봐야하는 막창 맛집!\n언제든 부담없이 가기 좋은 "
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>