2016-03-02 51 views
0

我有一项服务,在其他应用程序的前台添加并显示视图。视图中有一个editText。我想在输入焦点时输入editText,输入焦点时输入在后台应用程序中的任何内容。我在这里有代码,但我无法设置可见的软键盘。但是,我可以使用硬件键盘输入。哪里不对?后来加入的如何在android服务添加的浮动视图内的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); 
+0

第一步是首先显示键盘。然后我们可以稍后解决。 – DriveCarefully

+0

请记住这是一个服务类别,因此可能与活动有所不同 – DriveCarefully

+0

我在平板电脑上测试了代码,这是一款真正的设备。 – DriveCarefully

回答

0

尝试InputMethodManager.showSoftInput(View, int)InputMethodManager.hideSoftInputFromWindow(IBinder, int)

+0

我尝试:imm.showSoftInput(edtTextInput,InputMethodManager.SHOW_FORCED)里面if(hasFocus){};但键盘不显示 – DriveCarefully

-1

嗨,你可以试试我的代码波纹管,当你想隐藏或显示softkeyboard。

//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); 
+0

没有显示软键盘;这是放在课堂上的 – DriveCarefully

0

可能是我'很晚但对于相同的解决方法。你可以找到解决方案here

它被问及自己回答。

相关问题