如何防止软键盘在片段中向上推?

时间:2016-04-19 09:59:08

标签: android keyboard

我的片段中有一个edittext。为防止软键盘向上推,我尝试了

android:windowSoftInputMode="adjustPan"
android:windowSoftInputMode="adjustNothing"

以编程方式我尝试了片段

的onResume和oncreateview方法
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);

以上技术没有奏效。但是当我将 scrollview 作为根视图放入片段并放入 android:isScrollContainer =" false" 属性时,上面的方法正在工作......我怎么能让它工作没有滚动视图

3 个答案:

答案 0 :(得分:1)

在片段getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)

的onCreateView()中使用它

答案 1 :(得分:0)

另外,要考虑仔细检查的是你的片段是否是DialogFragments。获取DialogFragment的窗口,然后设置其软输入解决了我的问题,其他解决方案没有。

  

对话框是一个小窗口,提示用户做出决定或输入其他信息。对话框不会填满屏幕,通常用于需要用户在继续操作之前执行操作的模态事件。

<强>来源:https://developer.android.com/guide/topics/ui/dialogs.html

话虽这么说,DialogFragment有自己的窗口,可以通过在onCreateDialog方法中执行以下操作来设置。

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    Dialog dialog = // instantiate your dialog

    //Get your dialog's window
    Window window = dialog.getWindow();

    if (window != null) {
        dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING); 
    }

    return dialog;
}

答案 2 :(得分:0)

在ScrollView中设置android:isScrollContainer = "false"对我有用。

根据文档,将“ isScrollContainer”设置为true意味着可以调整滚动视图的大小以缩小其整个窗口,从而为输入法留出空间。

我怀疑在未将此属性设置为false的情况下发生的情况是,默认情况下ScrollView被视为滚动容器,并且正在调整大小(缩小)以允许出现输入法。之所以显示ScrollView之外的所有内容,是因为ScrollView缩小的程度足以显示同一层次结构级别的输入法和其他视图。