2011-12-08 6 views

答えて

-3

あなたはこの線に沿って何かを試してみてください:

InputMethodManager imm = 
    (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
boolean showingKeyboard = imm.isActive(); 

ホープ、このことができます!

EDIT:

他のオプションは、ユーザーが見たいものに応じて、開いたり閉じたり、キーボードを強制することです:)これは、より予測可能な利用行動につながると可能性の高いユーザーエクスペリエンスを改善することになります。

+1

(すなわちモトローラドロイド1 & 2のような)Configuration.KEYBOARDHIDDEN_YESを返しますと言うこと私のキーボードが画面に表示されていないときでさえ、 – aryaxt

+0

誰かが長押しメニューを使ってキーボードをトリガーすると、これは機能しません。これは、ソフトキーボードイベントを受け取るためにビューがアクティブである場合にのみ表示されます。 –

+0

@ Pheonixblade9:これはうまくいかず、isActive()の文書をもっと慎重に読んでください!それは可視性についてではなく、「アクティブ」状態に関するものです。 – Bondax

1

は、私はこのthreadは、あなたの質問に答えるべきだと思い

3

「シンプル」SDKのメソッド呼び出しの中にそのことはできませんので、thisまたはthis回避策を試してみてください。要約すると、アクティビティのルートビューに「@ + id/activityRoot」などのIDを与え、そのビューのViewTreeObserverにGlobalLayoutListenerをフックできます。

final View activityRootView = findViewById(R.id.activityRoot); 
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
    if (getResources().getConfiguration().keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) { // Check if keyboard is not hidden 
    // ... do something here 
    } 
    } 
}); 

これは@Reuben_Scrattonの上記のスレッドでヨーゲッシュの答え@組み合わせです:あなたがそうのように、キーボードの可視性を確認するところリスナーです。

UPDATE: 注keyboardHiddenのドキュメントは、デバイス上で利用可能なハードキーボードがある場合、それは常にそれが真のすべて返し

+4

動作しません。それは常にConfiguration.KEYBOARDHIDDEN_NOを私に返します(私のデバイスのハードキーボードはありません)。 –

関連する問題