PopupWindow перекрывает Навигационный ящик - PullRequest
0 голосов
/ 16 января 2020

В настоящее время мое всплывающее окно перекрывает другие представления. setElevation(0) ничего не меняет. setOverlapAnchor(false) и setAttachedInDecor(true) тоже мало помогают. Ниже приведен код, который я использовал. Мне нужно, чтобы всплывающее окно находилось под панелью навигации

  private fun showPopup(anchorView: View) {
        PopupWindow(
            LayoutInflater.from(activity).inflate(
                R.layout.popup_layout,
                null
            ),
            100,
            100,
            false
        )
       .apply {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    view?.elevation = 0f
                    contentView.elevation = 0f
                    elevation = 0f
                }
                isTouchable = false
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
                    isAttachedInDecor = true
                }

                PopupWindowCompat.setOverlapAnchor(this, false)
                PopupWindowCompat.showAsDropDown(this, anchorView, 0, 0, Gravity.NO_GRAVITY)
            }
    }

enter image description here

1 Ответ

2 голосов
/ 22 января 2020

PopupWindow - это окно . Ваш навигационный ящик находится в другом окне со своей собственной иерархией представления.

Это так:

- действие
---- окно1
------ viewhierarchy
-------- NavigationDrawer
---- window2
------ popup

Что вы хотите, невозможно с помощью PopupWindow.

Один из возможных способов - скрыть и показать всплывающее окно при открытии и закрытии навигации. Вот обратный вызов:

https://developer.android.com/reference/android/support/v4/widget/DrawerLayout.DrawerListener.html#ondrawerstatechanged

Или вы можете добавить вид как всплывающее окно самостоятельно и позаботиться о позиционировании и гравитации.

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

https://github.com/sephiroth74/android-target-tooltip

https://github.com/tomergoldst/tooltips

...