2016-08-02 62 views
0

特定の文字を入力した後、自動的に "大文字モード"に切り替えるようにします。私。私はキーボードが "シフト"ボタンを押して、開いている括弧 '('または '括弧を閉じる')を入力した後に次の文字を大文字にします。特定の文字の後にキャップを自動的にオンにしますか?

これは、キーボードで操作して、次の文字を大文字にする必要がないように、ユーザーにとってはオプションになります。私は次の文字を大文字にしないというオプションをユーザに持たせたいので、editTextに現れる前にテキストを自動的に大文字にしたくない。

+0

キーボードアプリを書いていない限り、私はかなりあなたができないと確信しています。しかし、編集テキストに 'TextWatcher'を付けて、入力された文字を手動で修正することができます。 –

答えて

1

これは、コードベースでプログラムで実行できます。

  1. setKeyListenerを設定します。
  2. の場合はを入力し、入力した文字がの特定の文字と等しいかどうかを確認します。
  3. TYPE_TEXT_FLAG_CAP_CHARACTERSを使用して文字を大文字にします。

役に立つと思われる以下のドキュメントを添付しました。このような

  1. https://developer.android.com/reference/android/text/InputType.html
  2. https://developer.android.com/reference/android/text/InputFilter.AllCaps.html
+0

私はこれがすべての文字を大文字にすると信じています。私は開いた金具を押した後、キーボードの「シフト」ボタンを押すようにしています。したがって、デフォルトでは次の文字は大文字になりますが、ユーザーがシフトボタンをもう一度押すと、次の文字は大文字になりません。 – ClownsENT

0

何かが動作することがあります。

public class CapitalizedEditText extends EditText { 
    List<Integer> mKeyCodes = new ArrayList<>(); 

    public CapitalizedEditText(Context context) { 
     super(context); 
    } 

    public void capitalizeAfter(int... keyCodes) { 
     for(int keyCode : keyCodes) { 
      mKeyCodes.add(keyCode); 
     } 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     setFilters(getInputFilter(keyCode)); 
     return super.onKeyDown(keyCode, event); 
    } 

    private InputFilter[] getInputFilter(int keyCode) { 
     return mKeyCodes.contains(keyCode) 
       ? new InputFilter[]{new InputFilter.AllCaps()} 
       : new InputFilter[] {}; 
    } 
} 

例:

((CapitalizedEditText) findViewById(R.id.editid)) 
         .capitalizeAfter(KeyEvent.KEYCODE_BUTTON_A, 
           KeyEvent.KEYCODE_LEFT_BRACKET, 
           KeyEvent.KEYCODE_LEFT_BRACKET); 

を指定されたキーの後に大文字にしますs

関連する問題