From 0be0aa66f822f765b4349d3d70c904338ee66a24 Mon Sep 17 00:00:00 2001 From: Konrad Pozniak Date: Mon, 10 Mar 2025 19:17:12 +0100 Subject: [PATCH] improve margin between post content and buttons (#4981) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [A user made me aware of the fact that we have varying spacing between post content and the buttons](https://mstdn.games/@Sven/114104502703573482), so I investigated 🧐 Indeed, there were some problems: - The trailing hashtags bar was sometimes visible, despite not showing any content. - The media container was visible despite showing no media - The buttons where layed out differently when showing a conversation This change fixes those problems and adds an additional 2dp space between buttons and contents because without these issues the buttons and the content are quite close otherwise. --- .../tusky/adapter/StatusBaseViewHolder.java | 10 ++++++-- .../conversation/ConversationViewHolder.java | 9 +++++-- .../keylesspalace/tusky/util/LinkHelper.kt | 2 +- app/src/main/res/layout/item_conversation.xml | 24 ++++++++----------- app/src/main/res/layout/item_status.xml | 18 +++++++------- 5 files changed, 36 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java index c7068fe54..84da4e170 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java @@ -97,7 +97,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { private final SparkButton favouriteButton; private final SparkButton bookmarkButton; private final ImageButton moreButton; - private final ConstraintLayout mediaContainer; + protected final ConstraintLayout mediaContainer; protected final MediaPreviewLayout mediaPreview; private final TextView sensitiveMediaWarning; private final View sensitiveMediaShow; @@ -808,7 +808,11 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { setBookmarked(actionable.getBookmarked()); List attachments = status.getAttachments(); boolean sensitive = actionable.getSensitive(); - if (statusDisplayOptions.mediaPreviewEnabled() && hasPreviewableAttachment(attachments)) { + if (attachments.isEmpty()) { + mediaContainer.setVisibility(View.GONE); + } else if (statusDisplayOptions.mediaPreviewEnabled() && hasPreviewableAttachment(attachments)) { + mediaContainer.setVisibility(View.VISIBLE); + setMediaPreviews(attachments, sensitive, listener, status.isShowingContent(), statusDisplayOptions.useBlurhash()); if (attachments.isEmpty()) { @@ -819,6 +823,8 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { mediaLabel.setVisibility(View.GONE); } } else { + mediaContainer.setVisibility(View.VISIBLE); + setMediaLabel(attachments, sensitive, listener, status.isShowingContent()); // Hide all unused views. mediaPreview.setVisibility(View.GONE); diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewHolder.java index 249509b9c..d94f60113 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewHolder.java +++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewHolder.java @@ -24,7 +24,6 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; import com.keylesspalace.tusky.R; @@ -91,7 +90,11 @@ public class ConversationViewHolder extends StatusBaseViewHolder { setBookmarked(status.getBookmarked()); List attachments = status.getAttachments(); boolean sensitive = status.getSensitive(); - if (statusDisplayOptions.mediaPreviewEnabled() && hasPreviewableAttachment(attachments)) { + if (attachments.isEmpty()) { + mediaContainer.setVisibility(View.GONE); + } else if (statusDisplayOptions.mediaPreviewEnabled() && hasPreviewableAttachment(attachments)) { + mediaContainer.setVisibility(View.VISIBLE); + setMediaPreviews(attachments, sensitive, listener, statusViewData.isShowingContent(), statusDisplayOptions.useBlurhash()); @@ -103,6 +106,8 @@ public class ConversationViewHolder extends StatusBaseViewHolder { mediaLabel.setVisibility(View.GONE); } } else { + mediaContainer.setVisibility(View.VISIBLE); + setMediaLabel(attachments, sensitive, listener, statusViewData.isShowingContent()); // Hide all unused views. mediaPreview.setVisibility(View.GONE); diff --git a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt index 3157919e1..b41b0e88c 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt +++ b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt @@ -86,7 +86,7 @@ fun setClickableText( trailingHashtagView == null || tags.isNullOrEmpty() -> Pair(spannableContent.length, emptyList()) else -> getTrailingHashtags(spannableContent) } - val inlineHashtags = mutableListOf() + val inlineHashtags = mutableSetOf() view.text = spannableContent.apply { styleQuoteSpans(view) diff --git a/app/src/main/res/layout/item_conversation.xml b/app/src/main/res/layout/item_conversation.xml index ba1072a1f..6588c679b 100644 --- a/app/src/main/res/layout/item_conversation.xml +++ b/app/src/main/res/layout/item_conversation.xml @@ -247,12 +247,11 @@ - + app:layout_constraintTop_toBottomOf="@+id/button_toggle_content" />