Android仅在用户按下按钮时才显示输入键盘

时间:2012-04-03 04:02:02

标签: android android-softkeyboard

我在一个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);
     }
}

我尝试了上面的代码,但它仍然显示。

3 个答案:

答案 0 :(得分:0)

在您拥有的每个editText上设置onFocusChangedListener(),如果它具有焦点,则禁用其中的键盘弹出窗口。

仅在用户按下按钮时显示..

答案 1 :(得分: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"

答案 2 :(得分:0)

转到xml并找到要隐藏键盘的活动 将给定属性添加到Activity ..

android:windowSoftInputMode="stateAlwaysHidden"