onApplyWindowInsets (вставки WindowInsets) не вызывается - PullRequest
1 голос
/ 03 апреля 2019

В настоящее время я использую настраиваемое представление, расширяющее макет ограничения, но оно не вызывает этот переопределенный метод в представлении onApplyWindowInsets (вставки WindowInsets), не уверенный, что пропало.

  class TestCustomView @JvmOverloads constructor(
  context: Context,
  attrs: AttributeSet? = null,
  defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {


    init {


    }
    //This method one not get called
    override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets {
    return super.onApplyWindowInsets(insets)
        val statusBarHeight = insets.systemWindowInsetTop
    }


    override fun fitSystemWindows(insets: Rect): Boolean {
    if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
      // Intentionally do not modify the bottom inset. For some reason,
      // if the bottom inset is modified, window resizing stops working.
      insets.left = 0
      insets.top = 0
      insets.right = 0
    }
    return super.fitSystemWindows(insets)
  }


}

1 Ответ

2 голосов
/ 04 апреля 2019

Как только вкладыши израсходованы, распространение вниз по иерархии прекращается.Похоже, что что-то выше потребляет то, что доступно.См. isConsumed() из WindowsInset .

Проверьте, полностью ли использовались эти вставки.

Вставки считаются «использованными», еслисоответствующие методы потребления * были вызваны так, чтобы все вставки были установлены на ноль.Это влияет на распространение вставок через иерархию представлений;вставки, которые не были полностью израсходованы, будут продолжать распространяться вплоть до дочерних взглядов.

...