禁用横向软键盘输入的全屏编辑视图?

在使用软键盘的Android设备上,我想防止在横向模式下出现全屏键盘编辑视图(如下所示)(即我只想看到软键盘本身和我后面的视图)。 我假设这可以使用
InputMethodService
上的
setExtractViewShown(false)
方法实现,但是我无法访问此默认实例并且不想实现自定义输入方法。 编辑添加:输入的视图不是
TextView
(它是一个带有自定义
InputConnection
实现的
View
),所以
android:imeOptions="flagNoExtractUi"
在这里不起作用。     
已邀请:
我终于回答了我自己的问题: 可以在连接输入连接的位置禁用提取UI(即全屏编辑模式):
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;

    // etc.
}
    
为此,只需导航到活动xml并在代码中粘贴
android:imeOptions="flagNoExtractUi"
即可。嗯很简单 - 但它应该粘贴在哪里?看一下示例活动xml的代码并查看EditText:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"         
    >

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

</LinearLayout>
如果您想为键盘提供更多自定义选项,请参阅http://developer.android.com/guide/topics/ui/controls/text.html     
将属性
android:imeOptions="flagNoExtractUi"
添加到
XML
文件中的每个
EditText
。     
上面的答案帮助我找出了动态添加的EditTexts的解决方案:
editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
    
使用
android:imeOptions="flagNoFullscreen"
实现该功能。     
此外,如果你想组合多个imeOptions programaticaly,你可以使用|句法。 例如,为了在横向上禁用全屏编辑视图并在键盘中用“OK”(ACTION_DONE)替换“Next”键,您可以使用:
editText.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
    
如果您直接修改IME,可以通过覆盖
onUpdateExtractingVisibility
来阻止它显示ExtractedView:
@Override
public void onUpdateExtractingVisibility(EditorInfo ei) {
    ei.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
    super.onUpdateExtractingVisibility(ei);
}
    
我知道这有点晚了但对于仍然感兴趣的人来说,这是我的解决方案: 在我的情况下,我有一个包含EditText的横向活动,我需要在此搜索活动中实现自动完成功能,重叠键盘导致用户无法看到RecyclerView结果的问题。 所以我最终在我的布局中使用了这个EditText:
<EditText
  android:layout_width="match_parent"
  android:layout_height="?actionBarSize"
  android:id="@+id/main_search_et"
  android:imeOptions="actionSearch|flagNoExtractUi"
  android:inputType="text"  />
干杯!     
您可以使用 :
android:imeOptions="flagNoFullscreen" 
在您的edittext中     
我的解决方案
android:imeOptions="flagNoExtractUi|flagNoFullscreen"
    
您可以调用隐藏软键盘并从搜索视图中清除焦点。
public void hideKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

super.clearFocus();
    

要回复问题请先登录注册