子类DefaultTimeBar侦听焦点更改事件

时间:2020-10-30 21:16:21

标签: android exoplayer2.x onfocuschangelistener

我有一个DefaultTimeBar,需要覆盖其OnFocusChanged方法。为此,我将DefaultTimeBar细分为:

class MyTimeBar @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : DefaultTimeBar(context, attrs, defStyleAttr), View.OnFocusChangeListener {

    init {
        Timber.d("hello")
    }

    override fun onFocusChanged(gainFocus: Boolean, direction: Int, previouslyFocusedRect: Rect?) {
        super.onFocusChanged(gainFocus, direction, previouslyFocusedRect)
        Timber.d("timebar onFocusChanged")
    }

    override fun onFocusChange(p0: View?, p1: Boolean) {
        Timber.d("view onFocusChange")
    }
}

这没有用,因此您可以看到我还实现了View.OnFocusChange来查看是否可以在那里得到答复。我在这两个回调方法中都放置了断点,还检查了日志输出。但是我没有得到任何回应。唯一有效的方法是init()方法,在该方法中,日志输出可见,并且命中了断点。

xml看起来像这样:

<com.example.view.MyTimeBar
    android:id="@+id/timebar"
    android:layout_width="match_parent"
    android:layout_height="32dp"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:importantForAccessibility="yes"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintBottom_toBottomOf="parent" />

在我看来,这一切都是对的,但显然有些问题。有人看到听众为什么没有反应吗?

0 个答案:

没有答案