2012-04-03 221 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"