当设备处于横向模式时显示软键盘

时间:2011-01-21 17:18:07

标签: java android landscape android-softkeyboard

此代码似乎无法在横向模式下运行:

EditText destinationSearch = (EditText) findViewById(R.id.destinationSearch); 
     

destinationSearch.requestFocus(); InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.showSoftInput(destinationSearch,InputMethodManager.SHOW_IMPLICIT);

是否有任何解决方案可以在横向模式下显示软键盘?

4 个答案:

答案 0 :(得分:11)

您需要使用show forced

InputMethodManager imm;
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
imm.showSoftInput(this.editText,InputMethodManager.SHOW_FORCED);

答案 1 :(得分:1)

原因是横向模式通常将软键盘放在新的全屏窗口中。正如Bakih所说,力量会起作用,但全屏幕窗口会产生更多效果,SHOW_FORCED也是如此。

我更喜欢添加

    <item name="android:imeOptions">flagNoFullscreen</item>

到我的EditTextStyle,所以我总能捕获onGlobalLayout()等等。现在您可以使用SHOW_IMPLICIT。只需确保您的UI在如此小的区域内看起来很好,并在不需要时删除autoCorrect。

答案 2 :(得分:0)

EditText editText = (EditText)findViewById(R.id.editText);

editText.setFocusableInTouchMode(false);

final Context context = this;

editText.setOnClickListener(new OnClickListener() {

    @Override 
    public void onClick(View v) {

        v.requestFocusFromTouch();

        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(v, InputMethodManager.SHOW_FORCED);

    } 
}); 

答案 3 :(得分:0)

更简单的XML更改答案 https://stackoverflow.com/a/13179855/1029110

 <EditText   
        android:id="@+id/txtInLandscapeVw"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:imeOptions="flagNoExtractUi">   
        <requestFocus />
    </EditText>

所以添加

android:imeOptions =“ flagNoExtractUi