2012-04-03 215 views
0

我在一個Activity中有一個PopupWindow。 當用戶按下活動中的列表項時,窗口將彈出以獲取來自用戶的輸入。只有當用戶按下按鈕時,纔會顯示輸入鍵盤

窗口中有一些EditText。而且我還提供了一些預設一些文本的按鈕,所以當用戶按下它時,它將進入編輯文本。

當窗口第一次彈出時,我可以禁用軟鍵盤。但是當我改變edittext的焦點(從一個edittext移動到另一個edittext)時,鍵盤顯示出來了。

我只想在用戶按下彈出窗口中的「顯示鍵盤」按鈕時顯示軟鍵盤顯示 我該怎麼做?

更新時間:

public void onFocusChange(View view, boolean hasFocus) { 
    if (hasFocus) { 
     selectedEditText = (EditText)view; 
     String text = selectedEditText.getText().toString(); 
     selectedEditText.setSelection(text.length()); 
     InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputManager.hideSoftInputFromWindow(selectedEditText.getWindowToken(), 0); 
    } 
} 

我想上面的代碼,但它仍然顯示。

回答

0

設置onFocusChangedListener()每EDITTEXT你和裏面是否已經聚焦禁止鍵盤流行..

顯示它只有當用戶按下按鈕..

+0

我更新了我的代碼,但它仍然顯示焦點鍵盤改變了,代碼是做錯了什麼? – Hanon 2012-04-03 04:16:04

+0

@Hanon ..代碼看起來不錯..嘗試調試,看看它是否被調用太.. – ngesh 2012-04-03 04:22:37

+0

我記錄了結果在if體內,身體部分已執行。我在最後添加了測試inputManager.isActive(),但它總是返回true – Hanon 2012-04-03 06:43:20

0

有非常簡單的解決方案也;在你的EditText上面創建假焦點,你很好走。 像這樣:

<LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:focusable="true" 
     android:focusableInTouchMode="true"> 
    </LinearLayout> 
    <!--Your EditText--> 
    <EditText 
     ... 
    </EditText> 

,你也可以在任何視圖中添加這兩條線段你提到的EditText以上,像TextView的等等。

 android:focusable="true" 
     android:focusableInTouchMode="true" 
0

轉到XML和在其中找到要隱藏鍵盤 給定的屬性到活動添加活動..

android:windowSoftInputMode="stateAlwaysHidden"