Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android服务添加的浮动视图中显示editText上的键盘_Android_Service_View_Android Softkeyboard_Floating - Fatal编程技术网

如何在android服务添加的浮动视图中显示editText上的键盘

如何在android服务添加的浮动视图中显示editText上的键盘,android,service,view,android-softkeyboard,floating,Android,Service,View,Android Softkeyboard,Floating,我有一项服务,可以在其他应用的前台添加和显示视图。视图中有一个编辑文本。我希望能够在焦点和失去焦点时键入editText,任何键入的内容都可以在后台应用程序上。我这里有代码,但我无法设置软键盘可见。不过,我可以用硬件键盘打字。怎么了 edtTextInput.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(

我有一项服务,可以在其他应用的前台添加和显示视图。视图中有一个编辑文本。我希望能够在焦点和失去焦点时键入
editText
,任何键入的内容都可以在后台应用程序上。我这里有代码,但我无法设置软键盘可见。不过,我可以用硬件键盘打字。怎么了

edtTextInput.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    Log.d("", "Has focus");

                    mParams1.flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
                    mWindowManager.updateViewLayout(
                            mAssistiveView1, mParams1);

                     InputMethodManager imm = (InputMethodManager)
                     getSystemService(Context.INPUT_METHOD_SERVICE);

                     imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
                } else {
                    Log.d("", "Lost focus");

                    mParams1.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
                    mWindowManager.updateViewLayout(
                            mAssistiveView1, mParams1);

                     InputMethodManager imm = (InputMethodManager)
                     getSystemService(Context.INPUT_METHOD_SERVICE);

                     imm.toggleSoftInput(0, 0);
                }
            }
        });
}                                          
随后添加的第2部分代码显示如何添加视图:

    mParams1.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE  ;

    mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    mWindowManager.addView(ParentView, mParams1);

请尝试
InputMethodManager.showSoftInput(View,int)
InputMethodManager.HideOffInputFromWindow(IBinder,int)
您好,您可以在需要时尝试下面的“我的代码”隐藏或显示软键盘

//hide keyboard
    EditText myEditText = (EditText) findViewById(R.id.myEditText);  //ref to your EditText
    InputMethodManager imm = (InputMethodManager)getSystemService(
          Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); //hide keyboard
//显示键盘

myEditText.postDelayed(new Runnable() {
  @Override
  public void run() {
    InputMethodManager keyboard = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    keyboard.showSoftInput(myEditText, 0);
  }
},50);

也许我已经很晚了,但还是有解决办法的。你可以找到解决办法


这是我自己提出并回答的。

我尝试:imm.showsoftwintput(edtTextInput,InputMethodManager.SHOW_FORCED)inside if(hasFocus){};但是键盘不显示。第一步是首先显示键盘。请记住,这是一个服务类,因此可能与活动有点不同。我在平板电脑(一种真正的设备)上测试了代码。我在第2部分中添加了更多关于如何添加视图的代码,可能对您有所帮助。您是否在OnFocusChange()中看到输出日志?未显示软键盘;那是放在课堂上的