TextViewのonPreIme()メソッドで割り込めるのですが,リスナーには見当たらないので継承してオーバライドする必要があります.
public class ImeInterceptEditText extends EditText { //------------- Fields ------------------------------------- /** IME入力のインターセプトを受けるリスナー */ private OnKeyListener preImeListener; //------------- Constructors ------------------------------- /** * newする用 */ public ImeInterceptEditText( Context context ) { super( context ); } /** * layoutからインスタンス化する用 */ public ImeInterceptEditText( Context context, AttributeSet attrs ) { super( context, attrs ); } //------------- Methods ------------------------------------ /** * インターセプト用のリスナーが設定されていればディスパッチします。 */ @Override public boolean onKeyPreIme( int keyCode, KeyEvent event ) { boolean consumed = false; if ( this.preImeListener != null ) { consumed = this.preImeListener.onKey( this, keyCode, event ); } return consumed ? true : super.onKeyPreIme( keyCode, event ); } /** * @param listener IME入力のインターセプトを受けるリスナー */ public void setOnKeyPreImeListener( OnKeyListener listener ) { this.preImeListener = listener; } }