Try to fix the bottom sheet showing expanded by default.

The second time it's open, it's not expanded... With this fix, the bug appear only at the third time...
This commit is contained in:
Benoit Marty 2019-10-11 10:57:31 +02:00
parent 36042ed145
commit b2f6fb8c91
2 changed files with 22 additions and 0 deletions

View File

@ -15,12 +15,17 @@
*/
package im.vector.riotx.core.platform
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.os.Parcelable
import android.view.View
import android.widget.FrameLayout
import com.airbnb.mvrx.MvRx
import com.airbnb.mvrx.MvRxView
import com.airbnb.mvrx.MvRxViewModelStore
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import im.vector.riotx.core.di.DaggerScreenComponent
import im.vector.riotx.core.di.ScreenComponent
@ -40,6 +45,8 @@ abstract class VectorBaseBottomSheetDialogFragment : BottomSheetDialogFragment()
activity as VectorBaseActivity
}
open val showExpanded = false
override fun onAttach(context: Context) {
screenComponent = DaggerScreenComponent.factory().create(vectorBaseActivity.getVectorComponent(), vectorBaseActivity)
super.onAttach(context)
@ -56,6 +63,19 @@ abstract class VectorBaseBottomSheetDialogFragment : BottomSheetDialogFragment()
super.onCreate(savedInstanceState)
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return super.onCreateDialog(savedInstanceState).apply {
if (showExpanded) {
setOnShowListener { dialog ->
val d = dialog as BottomSheetDialog
val bottomSheet = d.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) as FrameLayout?
BottomSheetBehavior.from(bottomSheet!!).state = BottomSheetBehavior.STATE_EXPANDED
}
}
}
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
mvrxViewModelStore.saveViewModels(outState)

View File

@ -38,6 +38,8 @@ class MessageActionsBottomSheet : VectorBaseBottomSheetDialogFragment(), Message
private val viewModel: MessageActionsViewModel by fragmentViewModel(MessageActionsViewModel::class)
override val showExpanded = true
private lateinit var actionHandlerModel: ActionsHandler
override fun injectWith(screenComponent: ScreenComponent) {