У меня есть класс группы 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")
}
}
}