Постоянный фрагмент заголовка (отключить анимацию) в Android TV (откат) - PullRequest
0 голосов
/ 09 января 2019

Кто-нибудь знает, как добиться вопроса в названии? Цель состоит в том, чтобы избежать анимации, приводящей к исчезновению панели заголовков при увеличении приложения Leanback на элементе строки после щелчка по заголовку.

setHeadersState BrowseSupportFragment не помогает. Возможно, что-то делать с захватом startHeadersTransitionInternal во время OnHeaderClickedListener? Если так, есть идеи, как правильно это реализовать?

1 Ответ

0 голосов
/ 20 апреля 2019

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

Сначала создайте в своем приложении пакет с тем же именем, что и BrowseSupportFragment. Затем создайте класс в этом пакете, который расширяет BrowseSupportFragment, и переопределите метод-нарушитель без реализации. Это будет выглядеть примерно так:

package android.support.v17.leanback.app; // Different for AndroidX

public class HackyBrowseSupportFragment extends BrowseSupportFragment {

    @Override
    void startHeadersTransitionInternal(boolean withHeaders) {
        // Do nothing. This avoids the transition.
    }
}

Тогда вместо расширения BrowseSupportFragment вы бы расширили HackyBrowseSupportFragment.

Одна вещь, на которую я обратил внимание, это то, что кнопка «Назад» больше не будет перефокусировать заголовки одной из строк, поэтому вам придется делать это вручную. Кроме того, кажется, что работает нормально.

...