2013-02-19 58 views
3

我目前正试图让我的程序最小化更改选项卡上的软键盘。不幸的是,我找不到任何由TabHost提供的方法,或者其他方式来检查选项卡被更改的时间,或者在选项卡被更改时运行方法。我也尝试用hideKeyboard作为关闭键盘的方法来添加android:onClick =“hideKeyboard”,但这种方法似乎对选项卡更改无效。 hideKeyboard的代码如下:切换tabhost中的制表符后关闭软键盘

public void hideKeyboard() 
{ 
    InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); 
    imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); 
} 

是否有任何其他方法可以尝试检测标签更改?或者我的hideKeyboard()方法有缺陷?

+0

检查这个.. http://stackoverflow.com/questions/4337514/android-tabwidget-detect-click-on-current-tab – Rahil2952 2013-02-19 04:56:10

回答

6

我认为OnTabChangeListener是执行此类操作的最佳位置。在你的情况下,它会是这样的:

tabhost.setOnTabChangedListener(new OnTabChangeListener(){ 
    @Override 
    public void onTabChanged(String tabId){ 
     hideKeyboard() 
    } 
}) 
+0

我之前试过了但我认为我在onCreate方法之外做了它。尽管如此,非常感谢帮助:D编辑:其实我只是意识到这只是切换键盘,因为我有三个选项卡,这种方法不会工作 – Nader 2013-02-20 05:36:28

+1

@Nader好,你可以尝试使用'hide'命令,而不是'toggle'。检查这个链接https://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#hideSoftInputFromWindow(android.os.IBinder,int),隐藏软输入键盘有几种方法。 – Evos 2013-02-20 06:46:50