3

私は Android 用の電卓を書いて​​います。式を入力するには、EditText を使用します。ボタンを作成するとき - ソフトウェア キーボードは必要ありませんが、カーソル位置、テキスト選択、コピー、貼り付けを変更したいです。つまり、すべてがそのままで、仮想キーボードのみが表示されません。バージョン 2.3 では、次のように書くことができました。

EditText.setInputType (InputType.TYPE_NULL);

そしてそれは完璧に機能しました。バージョン 4 では、カーソルが表示されない、メニューが機能しないなど、さまざまな方法を試しました。カーソルを移動できず、キーボードが表示され、実際には説明されませんでした。

InputMethodManager imm = (InputMethodManager)getSystemService(
    Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); //cursor not showing
------------------------------------------------------------------------
getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); //not working

Panecal、MobiCalc Free、関数電卓のように作りたいです。これに関する有益な提案があれば幸いです。PS私の英語でごめんなさい。

4

2 に答える 2

2

以下に投稿されたリンクから、Edittextのタッチで消費する例を次に示します。

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

これがあなたを正しい方向に向けることを願っています

上記の答えは、Androidでedittextをクリックしているときに仮想キーボードをブロックする方法から引用したものです。

これもうまくいくかもしれません getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

于 2012-11-10T13:51:52.157 に答える