【Touch&input 】处理输入法可见性(12)

当输入焦点移入或移出可编辑文本字段时,Android会根据需要显示或隐藏输入法(如屏幕键盘)。系统还会决定您的UI和文本字段在输入法上方的显示方式。例如,当屏幕上的垂直空间受到限制时,文本字段可能会填充输入法上方的所有空间。对于大多数应用程序,这些默认行为都是需要的。

但是,在某些情况下,您可能希望更直接地控制输入方法的可见性,并指定在输入法可见时如何显示布局。本课说明如何控制和响应输入法可见性。

在活动开始时显示输入法


虽然Android在活动开始时将焦点放置在布局中的第一个文本字段,但它不显示输入方法。这种行为是合适的,因为输入文本可能不是活动中的主要任务。但是,如果输入文本确实是主要任务(例如在登录屏幕中),那么您可能希望输入方法默认显示。

要在活动开始时显示输入法,请将该android:windowSoftInputMode属性添加到<activity>具有该"stateVisible"值的元素 。例如:

<application ... >
    <activity
        android:windowSoftInputMode="stateVisible" ... >
        ...
    </activity>
    ...
</application>

注意:如果用户的设备有附加的硬件键盘,则软输入法不会出现。

按需显示输入法


如果您的活动的生命周期中有一个方法要确保输入方法可见,则可以使用该InputMethodManager 方法显示它。

例如,以下方法需要View用户输入内容,调用requestFocus()焦点,然后 showSoftInput()打开输入法:

public void showSoftKeyboard(View view) {
    if (view.requestFocus()) {
        InputMethodManager imm = (InputMethodManager)
                getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
    }
}

注意: 一旦输入法可见,您不应该以编程方式隐藏它。当用户在文本字段中完成任务时,系统将隐藏输入法,或者用户可以使用系统控件(例如“ 后退”按钮)隐藏输入法。

指定你的UI应该如何回应


当输入法出现在屏幕上时,它会减少应用程序UI的可用空间量。系统会决定如何调整UI的可见部分,但可能无法正确显示。为确保您的应用具有最佳行为,您应该指定您希望系统如何在剩余空间中显示您的用户界面。

要在活动中声明您的首选治疗,请使用android:windowSoftInputMode清单<activity>元素中的某个“调整”值使用该属性。

扫描二维码关注公众号,回复: 1488634 查看本文章

例如,为了确保系统将布局调整为可用空间 - 这可确保所有布局内容都可访问(即使它可能需要滚动)-use "adjustResize":

<application ... >
    <activity
        android:windowSoftInputMode="adjustResize" ... >
        ...
    </activity>
    ...
</application>

您可以将调整规范与上面的初始输入法可见性规范结合起来:

    <activity
        android:windowSoftInputMode="stateVisible|adjustResize" ... >
        ...
    </activity>

"adjustResize"如果您的用户界面包含用户在执行文本输入之后或之后可能需要立即访问的控件,则指定非常重要。例如,如果您使用相对布局在屏幕底部放置按钮栏,请使用 "adjustResize"调整布局的大小,以使按钮栏显示在输入法上方。

Lastest Update:2018.04.17

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Touch&input 】处理输入法可见性(12)

猜你喜欢

转载自blog.51cto.com/4789781/2125389
今日推荐