我有一个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" />
在我看来,这一切都是对的,但显然有些问题。有人看到听众为什么没有反应吗?