2012-03-30 60 views
1

是有一些方法来知道,虚拟键盘是由在运行时由用户隐藏。 在标记我重复的问题之前,先了解我的问题,因为它看起来像重复,我还发现很多与相关主题有关的问题。但没有找到任何答案。虚拟键盘状态

问题一些事件期间出现像说的方向变化,我需要知道用户是否已经降到最低,我采取了相应的行动键盘或not.So。我试图非常具体地质疑甚至任何解释随意问。任何帮助将赞赏.Thanks提前 我尝试这一个

final View activityRootView = findViewById(R.id.ll_main_root); 
       activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
        @Override 
        public void onGlobalLayout() { 
         int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight(); 
         if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... 
          Toast.makeText(MainActivity.instance, "KeyBoarad" + value, Toast.LENGTH_LONG).show(); 
         } 
        } 
       }); 

回答

1

嘿它可能会迟到,但只是用于查询和我的建议。我在某种程度上面临同样的问题。实际上,在我的情况下,当方向改变时,即使在方向改变之前它是可见的,我的键盘也被最小化了。所以我使用android:windowSoftInputMode="stateUnchanged",这样即使在方向改变时我的键盘仍然可见。

而且您可能还有一个问题需要更改可见性,因此您可以使用toggleSoftInputFromWindow (IBinder windowToken, int showFlags, int hideFlags)

具体

InputMethodManager inputMgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMgr.toggleSoftInput(0, 0);

希望它能帮助。

+0

虽然帖子是旧的,我已经离开了代码的一部分,但仍然只是说巧合我需要一些你面对什么,所以我正在upvoting你并且会尝试你的代码。 Thnaks。 – Android 2012-07-23 12:00:36

1

差不多重复:How to capture the "virtual keyboard show/hide" event in Android?

这一个:Android EditText, soft keyboard show/hide event?

的结论似乎是,没有捕捉这种方式的方式,有些人使用黑客来捕获屏幕的大小并使用该参数。

+0

问题在那里。这种黑客行不通。必须有一些出路:-( – Android 2012-03-30 08:53:45

+0

heh是我的客人浪费无数小时:)你有没有考虑过你的问题的另一种方法?您可以检查当您更改配置时键盘是否打开,然后相应地处理它。 – Warpzit 2012-03-30 09:01:12

+0

哈哈,我别无选择,只能给它一个镜头。希望有人知道如何做到这一点。而这个黑客是我不知道为我工作的。屏幕的大小和高度一个 – Android 2012-03-30 10:19:27