2016-03-02 13 views
12

ハードウェアキーボードを使用してAndroidでキャップロック状態を取得するにはどうすればよいですか? Pure Javaで それはAndroidでキャップロック状態を取得する

boolean isOn = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK); 

で検出することができる。しかし、これはAndroidのでは動作しません...

+0

xmlファイルのEditTextに次の属性を使用してください。** android:inputType = "textCapCharacters" ** – malli

+0

これは自動的に大文字を自動的に書くだけですか? – Kewitschka

+0

あなたのシナリオを教えてください。これから期待している機能は何ですか? – malli

答えて

4

(それをテストしていない)これを試してみてください:あなたが最初の文字を作りたい場合は、あなたのEditTextでandroid:inputType="textCapSentences"を使用することができます

public class CustomEditText extends EditText{ 


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

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

public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(event.isCapsLockOn()){ 
     //Do what Ever 
    } 
    return super.onKeyDown(keyCode, event); 
} 

}

isCapsLockOn

+0

event.isCapsLockOn()はそれを作った。ありがとう! – Kewitschka

+0

[doc](http://developer.android.com/reference/android/widget/TextView.html)から次の点に注意してください: 'ソフトウェアキーボードのキーの押下は、通常このリスナーを起動しませんが、いくつかの状況でそうする。ソフトキーの押下に頼らないでください。 – user2340612

+0

ソフトウェアキーボード...彼はハードウェアキーボードについて尋ねました。また、ネイティブのソフトウェアキーボードアプリは、リスナーを(スウィフトキーとして)トリガーし、それが最良の解決策です – royB

2

私は、CapsLockキーの状態を検出することができます任意のAndroidのAPIがあるとは思いません。しかし、私はその選択肢を持っています。 CAPSLOCKがオンであるかオフであるかを検出するには、EditTextTextWatcherを使用することをお勧めします。

mEditText.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) { 
      String character = s.toString(); 
      /* 
      Matche entered character with Rajex wheter its capital or small 
      */ 
      if (Pattern.matches("[a-z]",character)) { 
       Log.e("","CapsLock is OFF"); 
      } 
      else if (Pattern.matches("[A-Z]",character)){ 
       Log.e("", "CapsLock is ON"); 
      } 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 
+0

私の問題では、大文字2行の大文字を避けたいので、キャップのロック状態を知る必要があります。 – Kewitschka

+0

@Kewitschka申し訳ありませんが、私は他の解決策はありません。あなたの質問で他の誰かが答えるのを待つかもしれません。あなたが解決策を得れば、このスレッドに投稿してください。他人を助けることができます。 –

+0

正しい解決策が既に承認されています。とにかくありがとう – Kewitschka

1

、大文字で始まります。いくつかの異なる動作が必要な場合は、他のオプションもあります。

関連する問題