2017-07-22 18 views
0

私は投稿から回答を読んでいますHow to set cursor position in EditText?問題の原因かもしれないEditTextに特定の問題があります。私のXMLレイアウトでは、 "edit"というEditTextを定義しています。その編集番号はです。inputType = noneです。アンドロイドデベロッパードキュメントによると、inputType = noneの場合、テキストは編集できません。理由は "none"が原因であり、これは私がAndroidの一般的なキーボードが私のUser-Interface上にポップアップするのを防ぐ方法です。これはうまくいきます。 私はこのようなことをしたい:ユーザが入力した:5 + sin()、今カーソルのeditTextカーソル位置は)記号の直後でなければならないが、inputType = noneであるのでカーソルは表示されない。私がする必要があるのは、()記号の間に次のテキスト入力が置かれる位置を移動することです。何が起こるかは、次のテキスト入力が)記号の直後に来ることです。 次のテキスト入力が4ならば、5 + sin()4、私はこれを望んでいません。私はむしろ次のようなことをしています:5 + sin(4)Androidアプリケーションの編集不可能なEditTextにカーソルを置く

私はボタン「()」を持つカスタムメイドのキーボードを使用しています。ここで私は任意の成功なしにしようとしたものです:

//once the user presses the "()" button: 
Selection.setSelection(edit.getText(),edit.getText().length() - 2); 

私が試してみました別の方法:

//once the user presses the "()" button: 
edit.setInputType(InputType.TYPE_CLASS_NUMBER); 
edit.setSelection(edit.getText().length() - 2); 
edit.setInputType(InputType.TYPE_NULL); 

次の2つの方法のどちらもが私のために働いています。また、xmlファイルでeditTextのinputTypeを "none"以外のものに設定しようとしました。しかし、アンドロイドのキーボードが私のカスタムメイドのキーボードの上にポップアップ。

任意の考えやアイデアは

答えて

1

私はあなたの()ボタンの仕事はしかし、あなたは、このいずれかを試してみることができないかを正確に知っていない参考になります。

yourEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      if(s.length()>0 && s.charAt(s.length()-1) == ')'){ 
      yourEditText.setSelection(s.length()-1); 
      } 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 
関連する問題