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:
parent
93a2907fce
commit
58d2dc4610
6 changed files with 126 additions and 127 deletions
|
|
@ -7,10 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
### Changed
|
### Changed
|
||||||
- Optimized loading messages in conversations
|
- Optimized loading messages in conversations
|
||||||
|
- Updated conversation item design to be more compact ([#376])
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Fixed position reset when opening attachments in conversations ([#82])
|
- Fixed position reset when opening attachments in conversations ([#82])
|
||||||
- Fixed automatic scroll to searched message in conversations ([#350])
|
- Fixed automatic scroll to searched message in conversations ([#350])
|
||||||
|
- Fixed non-standard text and avatar sizes in list items
|
||||||
|
|
||||||
## [1.4.0] - 2025-10-12
|
## [1.4.0] - 2025-10-12
|
||||||
### Added
|
### Added
|
||||||
|
|
@ -171,6 +173,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
[#349]: https://github.com/FossifyOrg/Messages/issues/349
|
[#349]: https://github.com/FossifyOrg/Messages/issues/349
|
||||||
[#350]: https://github.com/FossifyOrg/Messages/issues/350
|
[#350]: https://github.com/FossifyOrg/Messages/issues/350
|
||||||
[#359]: https://github.com/FossifyOrg/Messages/issues/359
|
[#359]: https://github.com/FossifyOrg/Messages/issues/359
|
||||||
|
[#376]: https://github.com/FossifyOrg/Messages/issues/376
|
||||||
[#456]: https://github.com/FossifyOrg/Messages/issues/456
|
[#456]: https://github.com/FossifyOrg/Messages/issues/456
|
||||||
[#461]: https://github.com/FossifyOrg/Messages/issues/461
|
[#461]: https://github.com/FossifyOrg/Messages/issues/461
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,110 +1,99 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/conversation_frame"
|
android:id="@+id/conversation_frame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="@dimen/tiny_margin"
|
android:layout_marginBottom="@dimen/tiny_margin"
|
||||||
android:clickable="true"
|
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
|
<ImageView
|
||||||
android:id="@+id/conversation_holder"
|
android:id="@+id/conversation_image"
|
||||||
android:layout_width="match_parent"
|
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:layout_height="wrap_content"
|
||||||
android:paddingStart="@dimen/small_margin"
|
android:layout_marginHorizontal="@dimen/activity_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:ellipsize="end"
|
||||||
android:paddingEnd="@dimen/normal_margin"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/medium_margin">
|
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
|
<TextView
|
||||||
android:id="@+id/conversation_image"
|
android:id="@+id/draft_indicator"
|
||||||
android:layout_width="@dimen/normal_icon_size"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="@dimen/normal_icon_size"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignTop="@+id/conversation_address"
|
android:layout_marginEnd="@dimen/small_margin"
|
||||||
android:layout_alignBottom="@+id/conversation_date"
|
android:ellipsize="end"
|
||||||
android:layout_centerVertical="true"
|
android:maxLines="1"
|
||||||
android:layout_marginStart="@dimen/normal_margin"
|
android:text="@string/draft"
|
||||||
android:layout_marginEnd="@dimen/normal_margin"
|
android:textAlignment="viewStart"
|
||||||
tools:src="@mipmap/ic_sms_messenger" />
|
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
|
<TextView
|
||||||
android:id="@+id/pin_indicator_l"
|
android:id="@+id/conversation_body_short"
|
||||||
android:layout_width="@dimen/normal_icon_size"
|
android:layout_width="0dp"
|
||||||
android:layout_height="@dimen/normal_icon_size"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignTop="@+id/conversation_address"
|
android:layout_marginEnd="@dimen/activity_margin"
|
||||||
android:layout_alignBottom="@+id/conversation_date"
|
android:ellipsize="end"
|
||||||
android:layout_centerVertical="true"
|
android:maxLines="1"
|
||||||
android:layout_marginStart="@dimen/normal_margin"
|
android:textAlignment="viewStart"
|
||||||
android:layout_marginEnd="@dimen/normal_margin">
|
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
|
<TextView
|
||||||
android:id="@+id/pin_indicator"
|
android:id="@+id/conversation_date"
|
||||||
android:layout_width="@dimen/pin_icon_size"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="@dimen/pin_icon_size"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentEnd="true"
|
android:alpha="0.7"
|
||||||
android:src="@drawable/ic_pin_filled_vector" />
|
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
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
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>
|
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/thread_message_sender_photo"
|
android:id="@+id/thread_message_sender_photo"
|
||||||
android:layout_width="@dimen/list_avatar_size"
|
android:layout_width="@dimen/list_icon_size_medium"
|
||||||
android:layout_height="@dimen/list_avatar_size"
|
android:layout_height="@dimen/list_icon_size_medium"
|
||||||
android:layout_alignBottom="@+id/thread_message_body"
|
android:layout_alignBottom="@+id/thread_message_body"
|
||||||
android:layout_alignParentStart="true"
|
android:layout_alignParentStart="true"
|
||||||
android:layout_marginEnd="@dimen/medium_margin"
|
android:layout_marginEnd="@dimen/medium_margin"
|
||||||
|
|
|
||||||
|
|
@ -1,57 +1,64 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/search_result_holder"
|
android:id="@+id/search_result_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
|
||||||
android:layout_marginBottom="@dimen/medium_margin"
|
|
||||||
android:background="?attr/selectableItemBackground"
|
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
|
<ImageView
|
||||||
android:id="@+id/search_result_image"
|
android:id="@+id/search_result_image"
|
||||||
android:layout_width="@dimen/normal_icon_size"
|
android:layout_width="@dimen/list_icon_size_medium"
|
||||||
android:layout_height="@dimen/normal_icon_size"
|
android:layout_height="@dimen/list_icon_size_medium"
|
||||||
android:layout_marginEnd="@dimen/normal_margin"
|
app:layout_constraintBottom_toBottomOf="@id/search_result_snippet"
|
||||||
tools:src="@mipmap/ic_sms_messenger" />
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/search_result_title"
|
||||||
|
tools:src="@mipmap/ic_launcher" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/search_result_title"
|
android:id="@+id/search_result_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_toStartOf="@+id/search_result_date"
|
android:layout_marginHorizontal="@dimen/activity_margin"
|
||||||
android:layout_toEndOf="@+id/search_result_image"
|
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingEnd="@dimen/activity_margin"
|
android:textSize="@dimen/list_primary_text_size"
|
||||||
android:textSize="@dimen/big_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" />
|
tools:text="John" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/search_result_snippet"
|
android:id="@+id/search_result_snippet"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/search_result_title"
|
android:layout_marginStart="@dimen/activity_margin"
|
||||||
android:layout_toEndOf="@+id/search_result_image"
|
|
||||||
android:alpha="0.7"
|
android:alpha="0.7"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingEnd="@dimen/activity_margin"
|
android:textSize="@dimen/list_secondary_text_size"
|
||||||
android:textSize="@dimen/big_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!" />
|
tools:text="Hey buddy!" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/search_result_date"
|
android:id="@+id/search_result_date"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
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:alpha="0.7"
|
android:alpha="0.7"
|
||||||
android:gravity="center_vertical"
|
android:textSize="@dimen/list_tertiary_text_size"
|
||||||
android:textSize="@dimen/smaller_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" />
|
tools:text="08/02/2021" />
|
||||||
|
|
||||||
</RelativeLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/item_contact_image"
|
android:id="@+id/item_contact_image"
|
||||||
android:layout_width="@dimen/normal_icon_size"
|
android:layout_width="@dimen/list_icon_size_medium"
|
||||||
android:layout_height="@dimen/normal_icon_size"
|
android:layout_height="@dimen/list_icon_size_medium"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_marginStart="@dimen/small_margin"
|
android:layout_marginStart="@dimen/small_margin"
|
||||||
android:padding="@dimen/tiny_margin"
|
android:padding="@dimen/tiny_margin"
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ eventbus = "3.3.1"
|
||||||
#Room
|
#Room
|
||||||
room = "2.8.2"
|
room = "2.8.2"
|
||||||
#Fossify
|
#Fossify
|
||||||
commons = "5.3.0"
|
commons = "5.3.1"
|
||||||
mmslib = "1.0.0"
|
mmslib = "1.0.0"
|
||||||
indicator-fast-scroll = "4524cd0b61"
|
indicator-fast-scroll = "4524cd0b61"
|
||||||
#Gradle
|
#Gradle
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue