如何判断 EditText 何时完成初始化?

How to determine when EditText has completed its initialization?

我有一个自定义 EditText,我会覆盖 onSelectionChange 以在光标位置发生变化时通知观察者。 There is a little delay to prevent notifying too often when selection is changing rapidly (backpressure).

private static final long POST_SELECTION_CHANGED_DELAY = 500;

private Runnable mSelectionRunnable = new Runnable() {
   @Override
   public void run() {
      if (mSelectionListener != null) {
         mSelectionListener.onSelectionChanged();
      }
   }
};

@Override
protected void onSelectionChanged(int selStart, int selEnd) {
   super.onSelectionChanged(selStart, selEnd);
   postSelectionChanged();
}

private void postSelectionChanged() {
   removeCallbacks(mSelectionRunnable);
   postDelayed(mSelectionRunnable, POST_SELECTION_CHANGED_DELAY);
}

问题是在 EditText 初始化阶段 onSelectionChanged 至少被引发一次并且通知我的观察者,即使它不是已经需要的。我尝试在延迟 1 秒后附加监听器,但这对我来说似乎很老套。

那么,有没有办法知道 EditText 初始化何时完成,以便我可以将我的侦听器附加到那里?我已经试过了 onAttachedToWindow 但现在太早了。

也许重写 onFocusChanged 方法?

override fun onFocusChanged(focused: Boolean, direction: Int, previouslyFocusedRect: Rect?) {}

因此您可以检测 EditText 是否获得焦点,然后继续您的自定义逻辑