2016-09-19 47 views
0

我有一个扩展对话框类的自定义对话框。启动时的Android自定义对话框类显示软键

我必须使其关注其edittext中的一个,并显示对话框启动时的软键。

我已经看了几个使用inputmanager的答案,但没有那么多运气。

调用对话框的活动被设置为默认隐藏软键,该软键在清单中设置。

在这种情况下,我能做些什么呢?

+0

将文本编辑为焦点,但您想隐藏键盘? – surya

+0

在活动中,它不能显示软键。 – March3April4

回答

1

我会建议你在start_of_the_dialog你应该关闭键盘通过折叠#SOF答案。如果它不起作用,只需在处理程序的帮助下添加100毫秒的延迟即可在对话开始时关闭键盘。

0

一个假设第一:

通过这一说法:

它调用的对话框设置为默认隐藏,这是在清单中设置的自定义功能键的活动。

这是否意味着它具有这样的windowSoftInputMode属性?

<activity 
android:name=".MainActivity" 
... 
android:windowSoftInputMode="stateHidden"> 
... 
</activity> 

一种方法是在对话框的创作设置OnShowListener

  1. 在您类是-扩展,对话框类,你可以创建一个OnStateListener,并宣布它的构造是这样的:

    public class MyDialog extends Dialog { 
    
        public MyDialog(final Context context) { 
         super(context); 
         setContentView(R.layout.dialog_mydialog); 
         setOnShowListener(new OnShowListener() { 
          @Override 
          public void onShow(DialogInterface dialogInterface) { 
           displayKeyboard(context); 
          } 
         }); 
        } 
    
        private void displayKeyboard(Context context) { 
         View view = findViewById(R.id.et_dialog_field); 
         InputMethodManager inputMethodManager = 
           (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 
         inputMethodManager.toggleSoftInputFromWindow(
           view.getApplicationWindowToken(), 
           InputMethodManager.SHOW_FORCED, 0); 
        } 
    } 
    
  2. 上的活动我假设你有类似:

    mButton.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(final View view) { 
         MyDialog dialog = new MyDialog(MainActivity.this); 
         dialog.show(); 
        } 
    }); 
    

外核层警告的是,如果有人要求设置OnShowListener它将覆盖你的。

我得到了show-soft-input来自this answer的一段代码。

0
ediText.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       InputMethodManager inputMethodManager = (InputMethodManager) 
       getSystemService(Context.INPUT_METHOD_SERVICE); 
       inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); 
      } 
     },100);