1. ホーム
  2. android

EditTextのキーボードを無効にする

2023-08-29 23:36:10

質問

電卓をやっています。 そこで、自作の Buttons を数字と関数で作ってみました。 計算しなければならない式は、その中の EditText というのは、ユーザーが式の途中でも数値や関数を追加できるようにしたいからで、そのために EditText を追加しました。 cursor . しかし、私は Keyboard をクリックしたときに EditText . この例では Android 2.3 では大丈夫ですが ICS を無効化します。 Keyboard とカーソルを表示します。

public class NoImeEditText extends EditText {

   public NoImeEditText(Context context, AttributeSet attrs) { 
      super(context, attrs);     
   }   

   @Override      
   public boolean onCheckIsTextEditor() {   
       return false;     
   }         
}

そして、この NoImeEditText の中で XML ファイル

<com.my.package.NoImeEditText
      android:id="@+id/etMy"
 ....  
/>

このEditTextをICSに対応させるにはどうしたらよいでしょうか? ありがとうございます。

どのように解決するのですか?

ここで は、あなたが必要とするものを提供するウェブサイトです。

要約すると、次のようなリンクが提供されています。 InputMethodManagerView をAndroid Developersから参照します。を参照することになります。 getWindowToken の内部で ViewhideSoftInputFromWindow() に対して InputMethodManager

より良い答えはリンクに記載されています。

onTouchイベントを消費する例です。

editText_input_field.setOnTouchListener(otl);

private OnTouchListener otl = new OnTouchListener() {
  public boolean onTouch (View v, MotionEvent event) {
        return true; // the listener has consumed the event
  }
};

同じウェブサイトからの別の例である。これは動作すると主張していますが、あなたのEditBoxがNULLであるため、それはもはやエディタではないでしょう、悪いアイデアのように思える。

MyEditor.setOnTouchListener(new OnTouchListener(){

  @Override
  public boolean onTouch(View v, MotionEvent event) {
    int inType = MyEditor.getInputType(); // backup the input type
    MyEditor.setInputType(InputType.TYPE_NULL); // disable soft input
    MyEditor.onTouchEvent(event); // call native handler
    MyEditor.setInputType(inType); // restore input type
    return true; // consume touch even
  }
});

これが正しい方向を示してくれることを願っています。