Fix issues rendering long button text in bottom sheet.

Fixes #11727
fork-5.53.8
Greyson Parrelli 2021-11-03 11:33:23 -04:00
rodzic 2a9eb1bae0
commit dc22b27cd8
2 zmienionych plików z 163 dodań i 130 usunięć

Wyświetl plik

@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.components.settings.DSLSettingsIcon
import org.thoughtcrime.securesms.components.settings.PreferenceModel
import org.thoughtcrime.securesms.util.MappingAdapter
import org.thoughtcrime.securesms.util.MappingViewHolder
import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.visible
/**
@ -41,27 +42,24 @@ object ButtonStripPreference {
class ViewHolder(itemView: View) : MappingViewHolder<Model>(itemView) {
private val message: View = itemView.findViewById(R.id.message)
private val messageLabel: View = itemView.findViewById(R.id.message_label)
private val messageContainer: View = itemView.findViewById(R.id.button_strip_message_container)
private val videoCall: View = itemView.findViewById(R.id.start_video)
private val videoLabel: View = itemView.findViewById(R.id.start_video_label)
private val videoContainer: View = itemView.findViewById(R.id.button_strip_video_container)
private val audioCall: ImageView = itemView.findViewById(R.id.start_audio)
private val audioLabel: TextView = itemView.findViewById(R.id.start_audio_label)
private val audioContainer: View = itemView.findViewById(R.id.button_strip_audio_container)
private val mute: ImageView = itemView.findViewById(R.id.mute)
private val muteLabel: TextView = itemView.findViewById(R.id.mute_label)
private val muteContainer: View = itemView.findViewById(R.id.button_strip_mute_container)
private val search: View = itemView.findViewById(R.id.search)
private val searchLabel: View = itemView.findViewById(R.id.search_label)
private val searchContainer: View = itemView.findViewById(R.id.button_strip_search_container)
override fun bind(model: Model) {
message.visible = model.state.isMessageAvailable
messageLabel.visible = model.state.isMessageAvailable
videoCall.visible = model.state.isVideoAvailable
videoLabel.visible = model.state.isVideoAvailable
audioCall.visible = model.state.isAudioAvailable
audioLabel.visible = model.state.isAudioAvailable
mute.visible = model.state.isMuteAvailable
muteLabel.visible = model.state.isMuteAvailable
search.visible = model.state.isSearchAvailable
searchLabel.visible = model.state.isSearchAvailable
messageContainer.visible = model.state.isMessageAvailable
videoContainer.visible = model.state.isVideoAvailable
audioContainer.visible = model.state.isAudioAvailable
muteContainer.visible = model.state.isMuteAvailable
searchContainer.visible = model.state.isSearchAvailable
if (model.state.isAudioSecure) {
audioLabel.setText(R.string.ConversationSettingsFragment__audio)
@ -90,6 +88,11 @@ object ButtonStripPreference {
audioCall.setOnClickListener { model.onAudioClick() }
mute.setOnClickListener { model.onMuteClick() }
search.setOnClickListener { model.onSearchClick() }
val firstButton: View? = listOf(messageContainer, videoContainer, audioContainer, muteContainer, searchContainer).firstOrNull { it.visible }
if (firstButton != null) {
ViewUtil.setLeftMargin(firstButton, context.resources.getDimensionPixelSize(R.dimen.conversation_settings_button_strip_spacing))
}
}
}

Wyświetl plik

@ -1,137 +1,167 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/button_strip"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="24dp"
android:paddingBottom="16dp">
android:paddingBottom="16dp"
android:layout_gravity="center_horizontal"
android:baselineAligned="false">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/message"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
<LinearLayout
android:id="@+id/button_strip_message_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__message"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toStartOf="@id/start_video"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_message_24"
app:tint="@color/signal_icon_tint_primary" />
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:id="@+id/message_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__message"
android:textAppearance="@style/Signal.Text.Caption"
app:layout_constraintEnd_toEndOf="@id/message"
app:layout_constraintStart_toStartOf="@id/message"
app:layout_constraintTop_toBottomOf="@id/message" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/message"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__message"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:srcCompat="@drawable/ic_message_24"
app:tint="@color/signal_icon_tint_primary" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/start_video"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
<TextView
android:id="@+id/message_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__message"
android:textAppearance="@style/Signal.Text.Caption"
android:gravity="center_horizontal" />
</LinearLayout>
<LinearLayout
android:id="@+id/button_strip_video_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__start_video_call"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toStartOf="@id/start_audio"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/message"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_video_call_24"
app:tint="@color/signal_icon_tint_primary" />
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:id="@+id/start_video_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__video"
android:textAppearance="@style/Signal.Text.Caption"
app:layout_constraintEnd_toEndOf="@id/start_video"
app:layout_constraintStart_toStartOf="@id/start_video"
app:layout_constraintTop_toBottomOf="@id/start_video" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/start_video"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__start_video_call"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:srcCompat="@drawable/ic_video_call_24"
app:tint="@color/signal_icon_tint_primary" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/start_audio"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
<TextView
android:id="@+id/start_video_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__video"
android:textAppearance="@style/Signal.Text.Caption"
android:gravity="center_horizontal" />
</LinearLayout>
<LinearLayout
android:id="@+id/button_strip_audio_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__start_audio_call"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toStartOf="@id/mute"
app:layout_constraintStart_toEndOf="@id/start_video"
app:layout_constraintTop_toTopOf="parent"
app:layout_goneMarginEnd="0dp"
app:srcCompat="@drawable/ic_phone_right_24"
app:tint="@color/signal_icon_tint_primary" />
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:id="@+id/start_audio_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__audio"
android:textAppearance="@style/Signal.Text.Caption"
app:layout_constraintEnd_toEndOf="@id/start_audio"
app:layout_constraintStart_toStartOf="@id/start_audio"
app:layout_constraintTop_toBottomOf="@id/start_audio" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/start_audio"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__start_audio_call"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:srcCompat="@drawable/ic_phone_right_24"
app:tint="@color/signal_icon_tint_primary" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/mute"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
<TextView
android:id="@+id/start_audio_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__audio"
android:textAppearance="@style/Signal.Text.Caption"
android:gravity="center_horizontal" />
</LinearLayout>
<LinearLayout
android:id="@+id/button_strip_mute_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__mute"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toStartOf="@id/search"
app:layout_constraintStart_toEndOf="@id/start_audio"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_bell_24"
app:tint="@color/signal_icon_tint_primary" />
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:id="@+id/mute_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__mute"
android:textAppearance="@style/Signal.Text.Caption"
app:layout_constraintEnd_toEndOf="@id/mute"
app:layout_constraintStart_toStartOf="@id/mute"
app:layout_constraintTop_toBottomOf="@id/mute" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/mute"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__mute"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toStartOf="@id/search"
app:layout_constraintStart_toEndOf="@id/start_audio"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_bell_24"
app:tint="@color/signal_icon_tint_primary" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/search"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__search"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/mute"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_search_24"
app:tint="@color/signal_icon_tint_primary" />
<TextView
android:id="@+id/mute_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__mute"
android:textAppearance="@style/Signal.Text.Caption"
android:gravity="center_horizontal" />
<TextView
android:id="@+id/search_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__search"
android:textAppearance="@style/Signal.Text.Caption"
app:layout_constraintEnd_toEndOf="@id/search"
app:layout_constraintStart_toStartOf="@id/search"
app:layout_constraintTop_toBottomOf="@id/search" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id="@+id/button_strip_search_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing"
android:orientation="vertical"
android:gravity="center_horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/search"
android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:background="@drawable/selectable_icon_button"
android:contentDescription="@string/ConversationSettingsFragment__search"
android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:srcCompat="@drawable/ic_search_24"
app:tint="@color/signal_icon_tint_primary" />
<TextView
android:id="@+id/search_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/ConversationSettingsFragment__search"
android:textAppearance="@style/Signal.Text.Caption"
android:gravity="center_horizontal" />
</LinearLayout>
</LinearLayout>