Так выглядел дизайн во вкладке "Просмотр"
Но когда я запускаю его на эмуляторе или реальном устройстве, срок действия до даты не появляется.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_margin="@dimen/card_margin"
android:elevation="3dp"
card_view:cardCornerRadius="@dimen/sell_item_radius">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="10dp"
android:background="@android:color/holo_blue_light">
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/validUntil"
android:textColor="@color/colorPrimaryDark" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/date"
android:text="date"
android:textColor="@color/colorPrimaryDark" />
</RelativeLayout>
<ImageView
android:id="@+id/itemImage"
android:layout_width="match_parent"
android:layout_height="@dimen/sell_item_image_height"
android:clickable="true"
android:scaleType="fitXY"
android:src="@drawable/ic_camera" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/itemImage"
android:layout_alignParentRight="true"
android:src="@drawable/ic_favourite" />
<TextView
android:id="@+id/imageCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="5dp"
android:layout_marginRight="10dp"
android:text="@string/imageCount"
android:textColor="@color/blue" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/itemImage"
android:layout_marginTop="-3dp"
android:paddingLeft="@dimen/sell_item_image_padding"
android:paddingTop="@dimen/sell_item_image_padding"
android:paddingRight="@dimen/sell_item_image_padding"
android:text="@string/title"
android:textColor="@color/blue"
android:textSize="@dimen/sell_item_title" />
<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_marginRight="10dp"
android:paddingLeft="@dimen/sell_item_image_padding"
android:paddingRight="@dimen/sell_item_image_padding"
android:text="@string/price" />
</RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
Спасибо
Причина, по которой вы не видите некоторые из ваших представлений, заключается в том, что все ваши представления по ширине и высоте имеют wrap_content
- поэтому вы создали макет, который ваши представления могут расширять в соответствии с их содержимым (если вы добавите 200 dp на 600 dp image и установите ширину и высоту wrap_content
это будет размер вашего вида), и вы можете видеть это даже при предварительном просмотре - ваши виды накладываются друг на друга.
Таким образом, вы можете использовать фиксированный размер для ваших видов, но при этом вы входите в опасную зону - ваш макет не будет реагировать на все размеры экрана, потому что разные телефоны имеют разный размер экрана и что может выглядеть хорошо на одном телефоне не будет хорошо смотреться на другом телефоне.
Конечно, вы можете исправить это, создав единый макет для каждого размера экрана, но это много работы.
Вы также можете определить свой относительный макет с помощью android:weightSum
и layout_weight
Но есть еще лучший вариант:
Вы можете использовать ConstraintLayout для создания единого макета, который реагирует на все размеры экрана, вся его иерархия представлений является плоской (нет вложенных групп представлений) и действительно проста в использовании.
Вот пример для макета, который выглядит так же, как вы хотите с constraintLayout:
<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">
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView12"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="TextView"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/textView13"
android:layout_width="0dp"
android:layout_height="15dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="TextView"
app:layout_constraintBottom_toTopOf="@+id/textView12"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/textView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="TextView"
app:layout_constraintStart_toEndOf="@+id/textView10"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView14"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="heart"
app:layout_constraintBottom_toTopOf="@+id/textView13"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/textView8" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:scaleType="fitXY"
app:layout_constraintBottom_toTopOf="@+id/textView14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView8"
tools:src="@tools:sample/avatars[11]" />
</androidx.constraintlayout.widget.ConstraintLayout>
А вот как это выглядит на портрете:
И пейзаж:
cardView