feat: use standard list item sizes for conversations (#558)

* fix: update unresolved reference to launcher icon

* fix: use standard 40dp avatar size for list items

* fix: use standard text size for conversation list items

* feat: move conversation datetime to the top-right

* feat: move the conversation pin indicator to the bottom-right

* refactor: convert conversation item layouts to ConstraintLayout

* fix: use standard padding for elements in conversation list item

* fix: use proper constraints for list items

* fix: use standard list item height for conversations

* feat: lower pin indicator alpha to 0.7

* fix: use standard text sizes from commons

* docs: update changelog

* fix: minor layout fixes

Refs: https://github.com/FossifyOrg/General-Discussion/issues/118, https://github.com/FossifyOrg/Messages/issues/376
This commit is contained in:
Naveen Singh 2025-10-15 14:29:03 +05:30 committed by GitHub
parent 93a2907fce
commit 58d2dc4610
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 126 additions and 127 deletions

View file

@ -1,110 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<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:id="@+id/conversation_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/tiny_margin"
android:clickable="true"
android:focusable="true">
android:focusable="true"
android:minHeight="@dimen/two_line_list_item_min_height"
android:paddingStart="@dimen/activity_margin"
android:paddingTop="@dimen/medium_margin"
android:paddingEnd="@dimen/activity_margin"
android:paddingBottom="@dimen/medium_margin">
<RelativeLayout
android:id="@+id/conversation_holder"
android:layout_width="match_parent"
<ImageView
android:id="@+id/conversation_image"
android:layout_width="@dimen/list_icon_size_medium"
android:layout_height="@dimen/list_icon_size_medium"
app:layout_constraintBottom_toBottomOf="@id/conversation_body_short"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/conversation_address"
tools:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/conversation_address"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/medium_margin"
android:paddingEnd="@dimen/normal_margin"
android:paddingBottom="@dimen/medium_margin">
android:layout_marginHorizontal="@dimen/activity_margin"
android:ellipsize="end"
android:maxLines="1"
android:textAlignment="viewStart"
android:textDirection="locale"
android:textSize="@dimen/list_primary_text_size"
app:layout_constraintBottom_toTopOf="@id/conversation_body_short"
app:layout_constraintEnd_toStartOf="@id/conversation_date"
app:layout_constraintStart_toEndOf="@id/conversation_image"
app:layout_constraintTop_toTopOf="parent"
tools:text="John" />
<ImageView
android:id="@+id/conversation_image"
android:layout_width="@dimen/normal_icon_size"
android:layout_height="@dimen/normal_icon_size"
android:layout_alignTop="@+id/conversation_address"
android:layout_alignBottom="@+id/conversation_date"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/normal_margin"
android:layout_marginEnd="@dimen/normal_margin"
tools:src="@mipmap/ic_sms_messenger" />
<TextView
android:id="@+id/draft_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/small_margin"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/draft"
android:textAlignment="viewStart"
android:textColor="@color/color_primary"
android:textDirection="locale"
android:textSize="@dimen/list_secondary_text_size"
android:textStyle="italic"
app:layout_constraintBottom_toBottomOf="@id/conversation_body_short"
app:layout_constraintEnd_toStartOf="@id/conversation_body_short"
app:layout_constraintStart_toStartOf="@id/conversation_address"
app:layout_constraintTop_toTopOf="@id/conversation_body_short" />
<RelativeLayout
android:id="@+id/pin_indicator_l"
android:layout_width="@dimen/normal_icon_size"
android:layout_height="@dimen/normal_icon_size"
android:layout_alignTop="@+id/conversation_address"
android:layout_alignBottom="@+id/conversation_date"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/normal_margin"
android:layout_marginEnd="@dimen/normal_margin">
<TextView
android:id="@+id/conversation_body_short"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/activity_margin"
android:ellipsize="end"
android:maxLines="1"
android:textAlignment="viewStart"
android:textDirection="locale"
android:textSize="@dimen/normal_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/pin_indicator"
app:layout_constraintStart_toEndOf="@id/draft_indicator"
app:layout_constraintTop_toBottomOf="@id/conversation_address"
tools:text="Hey buddy!" />
<ImageView
android:id="@+id/pin_indicator"
android:layout_width="@dimen/pin_icon_size"
android:layout_height="@dimen/pin_icon_size"
android:layout_alignParentEnd="true"
android:src="@drawable/ic_pin_filled_vector" />
<TextView
android:id="@+id/conversation_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="0.7"
android:textAlignment="viewStart"
android:textDirection="locale"
android:textSize="@dimen/list_tertiary_text_size"
app:layout_constraintBottom_toBottomOf="@id/conversation_address"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/conversation_address"
tools:text="13:30" />
</RelativeLayout>
<ImageView
android:id="@+id/pin_indicator"
android:layout_width="@dimen/pin_icon_size"
android:layout_height="@dimen/pin_icon_size"
android:alpha="0.7"
android:src="@drawable/ic_pin_filled_vector"
app:layout_constraintBottom_toBottomOf="@id/conversation_body_short"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/conversation_body_short" />
<TextView
android:id="@+id/conversation_address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/conversation_image"
android:ellipsize="end"
android:maxLines="1"
android:paddingStart="0dp"
android:paddingEnd="@dimen/activity_margin"
android:textAlignment="viewStart"
android:textDirection="locale"
android:textSize="@dimen/big_text_size"
tools:text="John" />
<TextView
android:id="@+id/draft_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/conversation_address"
android:layout_toEndOf="@+id/conversation_image"
android:ellipsize="end"
android:maxLines="1"
android:paddingStart="0dp"
android:paddingEnd="@dimen/small_margin"
android:text="@string/draft"
android:textAlignment="viewStart"
android:textColor="@color/color_primary"
android:textDirection="locale"
android:textSize="@dimen/normal_text_size"
android:textStyle="italic" />
<TextView
android:id="@+id/conversation_body_short"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/conversation_address"
android:layout_toEndOf="@+id/draft_indicator"
android:ellipsize="end"
android:maxLines="1"
android:paddingStart="0dp"
android:paddingEnd="@dimen/activity_margin"
android:textAlignment="viewStart"
android:textDirection="locale"
android:textSize="@dimen/normal_text_size"
tools:text="Hey buddy!" />
<TextView
android:id="@+id/conversation_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/conversation_body_short"
android:layout_marginTop="@dimen/tiny_margin"
android:layout_toEndOf="@+id/conversation_image"
android:alpha="0.4"
android:textAlignment="viewStart"
android:textDirection="locale"
android:textSize="@dimen/smaller_text_size"
tools:text="13:30" />
</RelativeLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -20,8 +20,8 @@
<ImageView
android:id="@+id/thread_message_sender_photo"
android:layout_width="@dimen/list_avatar_size"
android:layout_height="@dimen/list_avatar_size"
android:layout_width="@dimen/list_icon_size_medium"
android:layout_height="@dimen/list_icon_size_medium"
android:layout_alignBottom="@+id/thread_message_body"
android:layout_alignParentStart="true"
android:layout_marginEnd="@dimen/medium_margin"

View file

@ -1,57 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<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:id="@+id/search_result_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:layout_marginBottom="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin">
android:minHeight="@dimen/two_line_list_item_min_height"
android:paddingStart="@dimen/activity_margin"
android:paddingTop="@dimen/medium_margin"
android:paddingEnd="@dimen/activity_margin"
android:paddingBottom="@dimen/medium_margin">
<ImageView
android:id="@+id/search_result_image"
android:layout_width="@dimen/normal_icon_size"
android:layout_height="@dimen/normal_icon_size"
android:layout_marginEnd="@dimen/normal_margin"
tools:src="@mipmap/ic_sms_messenger" />
android:layout_width="@dimen/list_icon_size_medium"
android:layout_height="@dimen/list_icon_size_medium"
app:layout_constraintBottom_toBottomOf="@id/search_result_snippet"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/search_result_title"
tools:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/search_result_title"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_toStartOf="@+id/search_result_date"
android:layout_toEndOf="@+id/search_result_image"
android:layout_marginHorizontal="@dimen/activity_margin"
android:ellipsize="end"
android:maxLines="1"
android:paddingEnd="@dimen/activity_margin"
android:textSize="@dimen/big_text_size"
android:textSize="@dimen/list_primary_text_size"
app:layout_constraintBottom_toTopOf="@id/search_result_snippet"
app:layout_constraintEnd_toStartOf="@id/search_result_date"
app:layout_constraintStart_toEndOf="@id/search_result_image"
app:layout_constraintTop_toTopOf="parent"
tools:text="John" />
<TextView
android:id="@+id/search_result_snippet"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@+id/search_result_title"
android:layout_toEndOf="@+id/search_result_image"
android:layout_marginStart="@dimen/activity_margin"
android:alpha="0.7"
android:ellipsize="end"
android:maxLines="1"
android:paddingEnd="@dimen/activity_margin"
android:textSize="@dimen/big_text_size"
android:textSize="@dimen/list_secondary_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/search_result_image"
app:layout_constraintTop_toBottomOf="@id/search_result_title"
tools:text="Hey buddy!" />
<TextView
android:id="@+id/search_result_date"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignTop="@+id/search_result_title"
android:layout_alignBottom="@+id/search_result_title"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/tiny_margin"
android:layout_height="wrap_content"
android:alpha="0.7"
android:gravity="center_vertical"
android:textSize="@dimen/smaller_text_size"
android:textSize="@dimen/list_tertiary_text_size"
app:layout_constraintBottom_toBottomOf="@id/search_result_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/search_result_title"
tools:text="08/02/2021" />
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -21,8 +21,8 @@
<ImageView
android:id="@+id/item_contact_image"
android:layout_width="@dimen/normal_icon_size"
android:layout_height="@dimen/normal_icon_size"
android:layout_width="@dimen/list_icon_size_medium"
android:layout_height="@dimen/list_icon_size_medium"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/small_margin"
android:padding="@dimen/tiny_margin"