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.components.settings.PreferenceModel
import org.thoughtcrime.securesms.util.MappingAdapter import org.thoughtcrime.securesms.util.MappingAdapter
import org.thoughtcrime.securesms.util.MappingViewHolder import org.thoughtcrime.securesms.util.MappingViewHolder
import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.visible import org.thoughtcrime.securesms.util.visible
/** /**
@ -41,27 +42,24 @@ object ButtonStripPreference {
class ViewHolder(itemView: View) : MappingViewHolder<Model>(itemView) { class ViewHolder(itemView: View) : MappingViewHolder<Model>(itemView) {
private val message: View = itemView.findViewById(R.id.message) 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 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 audioCall: ImageView = itemView.findViewById(R.id.start_audio)
private val audioLabel: TextView = itemView.findViewById(R.id.start_audio_label) 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 mute: ImageView = itemView.findViewById(R.id.mute)
private val muteLabel: TextView = itemView.findViewById(R.id.mute_label) 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 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) { override fun bind(model: Model) {
message.visible = model.state.isMessageAvailable messageContainer.visible = model.state.isMessageAvailable
messageLabel.visible = model.state.isMessageAvailable videoContainer.visible = model.state.isVideoAvailable
videoCall.visible = model.state.isVideoAvailable audioContainer.visible = model.state.isAudioAvailable
videoLabel.visible = model.state.isVideoAvailable muteContainer.visible = model.state.isMuteAvailable
audioCall.visible = model.state.isAudioAvailable searchContainer.visible = model.state.isSearchAvailable
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
if (model.state.isAudioSecure) { if (model.state.isAudioSecure) {
audioLabel.setText(R.string.ConversationSettingsFragment__audio) audioLabel.setText(R.string.ConversationSettingsFragment__audio)
@ -90,6 +88,11 @@ object ButtonStripPreference {
audioCall.setOnClickListener { model.onAudioClick() } audioCall.setOnClickListener { model.onAudioClick() }
mute.setOnClickListener { model.onMuteClick() } mute.setOnClickListener { model.onMuteClick() }
search.setOnClickListener { model.onSearchClick() } 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"?> <?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" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/button_strip" android:id="@+id/button_strip"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="24dp" android:paddingTop="24dp"
android:paddingBottom="16dp"> android:paddingBottom="16dp"
android:layout_gravity="center_horizontal"
android:baselineAligned="false">
<androidx.appcompat.widget.AppCompatImageView <LinearLayout
android:id="@+id/message" android:id="@+id/button_strip_message_container"
android:layout_width="@dimen/conversation_settings_button_strip_button_size" android:layout_width="0dp"
android:layout_height="@dimen/conversation_settings_button_strip_button_size" android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing" android:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing"
android:background="@drawable/selectable_icon_button" android:orientation="vertical"
android:contentDescription="@string/ConversationSettingsFragment__message" android:gravity="center_horizontal">
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" />
<TextView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/message_label" android:id="@+id/message"
android:layout_width="wrap_content" android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="wrap_content" android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:layout_marginTop="12dp" android:background="@drawable/selectable_icon_button"
android:text="@string/ConversationSettingsFragment__message" android:contentDescription="@string/ConversationSettingsFragment__message"
android:textAppearance="@style/Signal.Text.Caption" android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toEndOf="@id/message" app:srcCompat="@drawable/ic_message_24"
app:layout_constraintStart_toStartOf="@id/message" app:tint="@color/signal_icon_tint_primary" />
app:layout_constraintTop_toBottomOf="@id/message" />
<androidx.appcompat.widget.AppCompatImageView <TextView
android:id="@+id/start_video" android:id="@+id/message_label"
android:layout_width="@dimen/conversation_settings_button_strip_button_size" android:layout_width="match_parent"
android:layout_height="@dimen/conversation_settings_button_strip_button_size" 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:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing"
android:background="@drawable/selectable_icon_button" android:orientation="vertical"
android:contentDescription="@string/ConversationSettingsFragment__start_video_call" android:gravity="center_horizontal">
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" />
<TextView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/start_video_label" android:id="@+id/start_video"
android:layout_width="wrap_content" android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="wrap_content" android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:layout_marginTop="12dp" android:background="@drawable/selectable_icon_button"
android:text="@string/ConversationSettingsFragment__video" android:contentDescription="@string/ConversationSettingsFragment__start_video_call"
android:textAppearance="@style/Signal.Text.Caption" android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toEndOf="@id/start_video" app:srcCompat="@drawable/ic_video_call_24"
app:layout_constraintStart_toStartOf="@id/start_video" app:tint="@color/signal_icon_tint_primary" />
app:layout_constraintTop_toBottomOf="@id/start_video" />
<androidx.appcompat.widget.AppCompatImageView <TextView
android:id="@+id/start_audio" android:id="@+id/start_video_label"
android:layout_width="@dimen/conversation_settings_button_strip_button_size" android:layout_width="match_parent"
android:layout_height="@dimen/conversation_settings_button_strip_button_size" 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:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing"
android:background="@drawable/selectable_icon_button" android:orientation="vertical"
android:contentDescription="@string/ConversationSettingsFragment__start_audio_call" android:gravity="center_horizontal">
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" />
<TextView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/start_audio_label" android:id="@+id/start_audio"
android:layout_width="wrap_content" android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="wrap_content" android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:layout_marginTop="12dp" android:background="@drawable/selectable_icon_button"
android:text="@string/ConversationSettingsFragment__audio" android:contentDescription="@string/ConversationSettingsFragment__start_audio_call"
android:textAppearance="@style/Signal.Text.Caption" android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toEndOf="@id/start_audio" app:srcCompat="@drawable/ic_phone_right_24"
app:layout_constraintStart_toStartOf="@id/start_audio" app:tint="@color/signal_icon_tint_primary" />
app:layout_constraintTop_toBottomOf="@id/start_audio" />
<androidx.appcompat.widget.AppCompatImageView <TextView
android:id="@+id/mute" android:id="@+id/start_audio_label"
android:layout_width="@dimen/conversation_settings_button_strip_button_size" android:layout_width="match_parent"
android:layout_height="@dimen/conversation_settings_button_strip_button_size" 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:layout_marginEnd="@dimen/conversation_settings_button_strip_spacing"
android:background="@drawable/selectable_icon_button" android:orientation="vertical"
android:contentDescription="@string/ConversationSettingsFragment__mute" android:gravity="center_horizontal">
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" />
<TextView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/mute_label" android:id="@+id/mute"
android:layout_width="wrap_content" android:layout_width="@dimen/conversation_settings_button_strip_button_size"
android:layout_height="wrap_content" android:layout_height="@dimen/conversation_settings_button_strip_button_size"
android:layout_marginTop="12dp" android:background="@drawable/selectable_icon_button"
android:text="@string/ConversationSettingsFragment__mute" android:contentDescription="@string/ConversationSettingsFragment__mute"
android:textAppearance="@style/Signal.Text.Caption" android:padding="@dimen/conversation_settings_button_strip_button_padding"
app:layout_constraintEnd_toEndOf="@id/mute" app:layout_constraintEnd_toStartOf="@id/search"
app:layout_constraintStart_toStartOf="@id/mute" app:layout_constraintStart_toEndOf="@id/start_audio"
app:layout_constraintTop_toBottomOf="@id/mute" /> app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_bell_24"
app:tint="@color/signal_icon_tint_primary" />
<androidx.appcompat.widget.AppCompatImageView <TextView
android:id="@+id/search" android:id="@+id/mute_label"
android:layout_width="@dimen/conversation_settings_button_strip_button_size" android:layout_width="match_parent"
android:layout_height="@dimen/conversation_settings_button_strip_button_size" android:layout_height="wrap_content"
android:background="@drawable/selectable_icon_button" android:layout_marginTop="12dp"
android:contentDescription="@string/ConversationSettingsFragment__search" android:text="@string/ConversationSettingsFragment__mute"
android:padding="@dimen/conversation_settings_button_strip_button_padding" android:textAppearance="@style/Signal.Text.Caption"
app:layout_constraintEnd_toEndOf="parent" android:gravity="center_horizontal" />
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 </LinearLayout>
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" />
</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>