干し石榴長文用

長文以外はTumblrへ徐々に移します。

ソフトキーボードの収納を検知する(BACKキーに割込む)

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;
     }
}