Litho FocusChangedEvent запускается постоянно - PullRequest
0 голосов
/ 24 июня 2019

Litho FocusChangedEvent запускается постоянно

Я пытаюсь написать демо-версию Android TV, добавьте FocusChangedEvent в ListItemSpec, чтобы изменить состояние элемента. Демо очень просто, просто меняя ClickEvent с barebones (демо). И обнаружил, что элемент в состоянии RecyclerCollectionComponent hasFocus постоянно менялся. Я считаю, что первый элемент в списке теряет фокус и возвращает его обратно. и пульт дистанционного управления телевизора трудно скользить список. Я проверил вхождение ключевого события dispatchKeyEvent, но ничего.

@OnCreateLayout
fun onCreateLayout(
        c: ComponentContext,
        @Prop color: Int,
        @Prop title: String,
        @Prop subtitle: String,
        @State isFocus: Boolean
): Component = Column.create(c)
        .paddingDip(ALL, 16f)
        .focusable(true)
        .clickHandler(ListItem.onFocusChanged(c))
        .backgroundColor(if (isFocus) Color.GRAY else Color.WHITE)
        .child(
                Text.create(c)
                        .text(title)
                        .textSizeSp(40f))
        .child(
                Text.create(c)
                        .text(subtitle)
                        .textSizeSp(20f))
        .build()

@OnUpdateState
fun bgColorChange(isFocus: StateValue<Boolean>) {
    isFocus.set(!isFocus.get()!!)
}

@OnEvent(FocusChangedEvent::class)
fun onFocusChanged(c: ComponentContext, @FromEvent hasFocus:Boolean) {
    logd("onFocusChanged","$hasFocus")
    ListItem.bgColorChange(c)
}




2019-06-24 11:35:41.626 19560-19560/com.demo.lithodemo D/onFocusChanged: true
2019-06-24 11:35:41.659 19560-19560/com.demo.lithodemo D/onFocusChanged: true
2019-06-24 11:35:41.662 19560-19560/com.demo.lithodemo D/onFocusChanged: false
2019-06-24 11:35:41.664 19560-19560/com.demo.lithodemo D/onFocusChanged: true
2019-06-24 11:35:41.697 19560-19560/com.demo.lithodemo D/onFocusChanged: true
2019-06-24 11:35:41.700 19560-19560/com.demo.lithodemo D/onFocusChanged: false
2019-06-24 11:35:41.705 19560-19560/com.demo.lithodemo D/onFocusChanged: true
2019-06-24 11:35:41.742 19560-19560/com.demo.lithodemo D/onFocusChanged: true
2019-06-24 11:35:41.744 19560-19560/com.demo.lithodemo D/onFocusChanged: false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...