diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsFragment.kt index 66c319359c..ff74aea760 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsFragment.kt @@ -22,7 +22,7 @@ abstract class DSLSettingsFragment( @StringRes private val titleId: Int = -1, @MenuRes private val menuId: Int = -1, @LayoutRes layoutId: Int = R.layout.dsl_settings_fragment, - val layoutManagerProducer: (Context) -> RecyclerView.LayoutManager = { context -> LinearLayoutManager(context) } + protected var layoutManagerProducer: (Context) -> RecyclerView.LayoutManager = { context -> LinearLayoutManager(context) } ) : Fragment(layoutId) { private var recyclerView: RecyclerView? = null diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt index f3b47ddb8d..7ecb83079c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt @@ -18,6 +18,7 @@ import androidx.core.content.ContextCompat import androidx.core.view.doOnPreDraw import androidx.fragment.app.viewModels import androidx.navigation.Navigation +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import app.cash.exhaustive.Exhaustive import com.google.android.flexbox.FlexboxLayoutManager @@ -92,8 +93,7 @@ private const val REQUEST_CODE_RETURN_FROM_MEDIA = 4 class ConversationSettingsFragment : DSLSettingsFragment( layoutId = R.layout.conversation_settings_fragment, - menuId = R.menu.conversation_settings, - layoutManagerProducer = Badges::createLayoutManagerForGridWithBadges + menuId = R.menu.conversation_settings ) { private val alertTint by lazy { ContextCompat.getColor(requireContext(), R.color.signal_alert_primary) } @@ -151,6 +151,11 @@ class ConversationSettingsFragment : DSLSettingsFragment( toolbarTitle = view.findViewById(R.id.toolbar_title) toolbarBackground = view.findViewById(R.id.toolbar_background) + val args: ConversationSettingsFragmentArgs = ConversationSettingsFragmentArgs.fromBundle(requireArguments()) + if (args.recipientId != null) { + layoutManagerProducer = Badges::createLayoutManagerForGridWithBadges + } + super.onViewCreated(view, savedInstanceState) } @@ -762,9 +767,14 @@ class ConversationSettingsFragment : DSLSettingsFragment( private val rect = Rect() override fun getAnimationState(recyclerView: RecyclerView): AnimationState { - val layoutManager = recyclerView.layoutManager as FlexboxLayoutManager + val layoutManager = recyclerView.layoutManager!! + val firstVisibleItemPosition = if (layoutManager is FlexboxLayoutManager) { + layoutManager.findFirstVisibleItemPosition() + } else { + (layoutManager as LinearLayoutManager).findFirstVisibleItemPosition() + } - return if (layoutManager.findFirstVisibleItemPosition() == 0) { + return if (firstVisibleItemPosition == 0) { val firstChild = requireNotNull(layoutManager.getChildAt(0)) firstChild.getLocalVisibleRect(rect) diff --git a/app/src/main/res/layout/conversation_settings_button_strip.xml b/app/src/main/res/layout/conversation_settings_button_strip.xml index 7cc731a167..477722527d 100644 --- a/app/src/main/res/layout/conversation_settings_button_strip.xml +++ b/app/src/main/res/layout/conversation_settings_button_strip.xml @@ -1,182 +1,187 @@ - + android:layout_gravity="center_horizontal"> + android:id="@+id/button_strip" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:baselineAligned="false" + android:orientation="horizontal" + android:paddingTop="24dp" + android:paddingBottom="16dp"> - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file