2012-08-05 73 views
0

我有一個listview和textfilterenabled。在某些設備上,當您單擊菜單按鈕上的長按鍵時,鍵盤會顯示,但在某些設備上,標準鍵盤無法顯示。長鍵盤上的Android顯示鍵盤點擊

是否有人知道如何長按鍵盤上的菜單按鈕。我已經有一個代碼,但它不工作。鍵盤不顯示。

我的代碼:

@Override 
public boolean onKeyLongPress(int keycode, KeyEvent event){   
    if (keycode == KeyEvent.KEYCODE_MENU){    
     InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputMethodManager.showSoftInput(lv, InputMethodManager.SHOW_IMPLICIT);    
    } 
    return true; 
} 

提前感謝!

回答

0

您需要集中在鍵盤上有一定EDITTEXT

這樣:

EditText etHello= (EditText) findViewById(R.id.yourEditText); 
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(etHello, InputMethodManager.SHOW_IMPLICIT); 
+0

就像我說的,我有一個listview,而不是一個edittext。 – Simon 2012-08-05 15:09:27

+0

然後將EditText更改爲列表視圖?如果您發現我的答案有用,請隨時接受。 – TheBlueCat 2012-08-05 17:23:53

+0

這不是有用的! edittext如何成爲一個列表視圖? – Simon 2012-08-05 21:07:46

0

您撥打showSoftInput() - 方法與SHOW_IMPLICIT - 平面。它的文件說:

旗地爲showSoftInput(View, int)以表明這是顯示輸入窗口,而不是由用戶直接 請求的結果的 隱含的請求。此窗口可能不會顯示在此 的情況下。

既然你想鍵盤顯示時用戶按住菜單按鈕,它不是隱含了。嘗試傳入0作爲扁平參數。

也可以切換鍵盤,這似乎也適用於其他人。爲此,請參考本舊的問題:android - show soft keyboard on demand


的問題是在你的onKeyLongPress() - 方法。要使用菜單按鈕,需要一些額外的工作。請參閱我對此舊問題的回答:How can I create a long touch event on the physical menu button?

最後但並非最不重要的一點,您應該知道菜單按鈕已被棄用,並且不在較新的設備上。出於兼容性原因,你會得到它的模擬版本,但ActionBar(和它的搜索字段)應該比傳統支持更受青睞。所以你可能想要檢查一個替代方案。

+0

我試過了,但它不是隱含的節目。當我使用onclicklistener製作按鈕並使用以下代碼時: InputMethodManager inputMethodManager(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); iinputMethodManager.showSoftInput(lv,InputMethodManager.SHOW_IMPLICIT); 它顯示我的鍵盤。所以我認爲問題是菜單按鈕上的長按。 而在新的Android設備上,菜單按鈕是標準的未顯示,但當應用程序需要時,菜單按鈕顯示 – Simon 2012-08-05 15:18:32

+0

@ user1380611我更新了我的答案。檢查這是否適合你。 – 2012-08-05 17:21:08

+0

謝謝!我在這篇文章中也發現:http://mobile.tutsplus。COM /教程/安卓/ Android的SDK攔截物理鍵事件/。我明天嘗試,如果它的工作! – Simon 2012-08-05 21:10:37