Android Studio Kotlin - отключение пользовательских жестов в BottomSheetDialogFragment - PullRequest
0 голосов
/ 13 октября 2019

Мне нужно отключить перетаскивание пользователем нижнего листа, но я понятия не имею, как это сделать.

Это мой фрагмент:

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.material.bottomsheet.BottomSheetDialogFragment

class MyFragment : BottomSheetDialogFragment() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val main = inflater.inflate(R.layout.fragment_layout, container, false)

       return main
    }

    companion object {
        fun newInstance(): MyFragment = newInstance()
    }
}

Вот как я это показываю:

val test = MyFragment()
test.show(supportFragmentManager, "test")

1 Ответ

0 голосов
/ 13 октября 2019

Вам необходимо переопределить onCreateDialog () и поставить ниже код

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog

        dialog.setOnShowListener {
            val bottomSheet = (it as BottomSheetDialog).findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) as FrameLayout?
            val behavior = BottomSheetBehavior.from(bottomSheet!!)
            behavior.state = BottomSheetBehavior.STATE_EXPANDED

            behavior.setBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
                override fun onStateChanged(bottomSheet: View, newState: Int) {
                    if (newState == BottomSheetBehavior.STATE_DRAGGING) {
                        behavior.state = BottomSheetBehavior.STATE_EXPANDED
                    }
                }

                override fun onSlide(bottomSheet: View, slideOffset: Float) {}
            })
        }

        // Do something with your dialog like setContentView() or whatever
        return dialog
    }

или проверить эту ссылку Как отключить перетаскивание BottomSheetDialogFragment

...