Проблемы с созданием всплывающего окна в действии Android

Простой ответ с примером ответа; -)

в iOS Simulator,

Нажмите Command + control + c или из меню: Редактировать> Экран копирования

enter image description here

открыть приложение « Предварительный просмотр », Команда «Нажать» + n или из меню: Файл> Новый из буфера обмена, затем вы можете сохранить Command + s

UnCheck Alpha ]

enter image description here

Вы можете изменить размер изображения в соответствии со своими требованиями.

enter image description here

Вот окончательное изображение, например

enter image description here

52
задан Amplify91 17 November 2010 в 18:58
поделиться

1 ответ

Возможно, время для более нового решения. Это методы проверяют 5 раз каждые 50 мс, если родительское представление для PopupWindow имеет маркер. Я использую его в своем специализированном PopupWindow.

private fun tryToShowTooltip(tooltipLayout: View) {
    Flowable.fromCallable { parentView.windowToken != null }
            .map { hasWindowToken ->
                if (hasWindowToken) {
                    return@map hasWindowToken
                }
                throw RetryException()
            }
            .retryWhen { errors: Flowable<Throwable> ->
                errors.zipWith(
                        Flowable.range(1, RETRY_COUNT),
                        BiFunction<Throwable, Int, Int> { error: Throwable, retryCount: Int ->
                            if (retryCount >= RETRY_COUNT) {
                                throw error
                            } else {
                                retryCount
                            }
                        })
                        .flatMap { retryCount: Int ->
                            Flowable.timer(retryCount * MIN_TIME_OUT_MS, TimeUnit.MILLISECONDS)
                        }
            }
            .onErrorReturn {
                false
            }
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({ hasWindowToken ->
                if (hasWindowToken && !isShowing) {
                    showAtLocation(tooltipLayout, Gravity.NO_GRAVITY, 100, 100)
                }
            }, { t: Throwable? ->
                //error logging
            })
}

с

companion object {

    private const val RETRY_COUNT = 5
    private const val MIN_TIME_OUT_MS = 50L
}

class RetryException : Throwable()
0
ответ дан 7 November 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: