Android Проблемы с фокусировкой на телевизоре для ViewGroup - PullRequest
0 голосов
/ 25 апреля 2020

enter image description here

У меня есть класс группы Custom View, который содержит ViewPager, который автоматически прокручивается, как вы видите на скриншоте. Ниже ViewPager есть другие представления, которые являются отдельными компонентами группы пользовательских представлений.

Todo

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

Испытания

  • Я не получаю обратные вызовы фокуса, установленные для всей группы видов, когда вид теряет фокус даже после включения фокусируемого true, как указано в коде.

То, чего я достиг

  • Я обработал случай, когда представление полностью не видимо, используя эти обратные вызовы onAttachedToWindow () onDetachedFromWindow () для управления прокрутка включить / отключить, и она работает отлично.

Пожалуйста, предоставьте некоторые входные данные о том, как можно получить фокус для пейджера просмотра, так как у меня возникают проблемы при получении обратных вызовов фокуса. Спасибо

Вот код

CarouselCardView constructor(context) : CustomWidget(context),ViewPager.OnPageChangeListener {

private var currentPage = 0

override fun getLayoutId(): Int {
    return R.layout.banner
}

init {
    isFocusable = true
    isFocusableInTouchMode = true
}

private fun setViewpagerAutoAdvanceFeature(
    modelData: List<ContentData>
) {
    //Auto scroll logic goes here
}

override fun bindData(modelData: List<ContentData>) {

    val pagerAdapter = HeroPagerAdapter(context, model = modelTV,
        onClickItem = { position ->
            clickListener.onItemSelected(uiComponent, uiComponent.componentItems[position])
        },
        onLastItemReached = { viewPager.setCurrentItem(0, true) })
    viewPager.adapter = pagerAdapter
}

//Call backs don't trigger 
setOnFocusChangeListener { v, hasFocus ->
    if (hasFocus) {
        Log.e("ANI","On setOnFocusChangeListener showing")
    } else {
        Log.e("ANI","On setOnFocusChangeListener not showing")

    }
}

}

...