Android官方开发文档Training系列课程中文版:键盘输入处理之控制输入法的显示方式

简介: 原文地址:http://android.xsoftlab.net/training/keyboard-input/visibility.html当输入的焦点进入或者离开文本框时,Android会适时的显示或隐藏输入法。

原文地址:http://android.xsoftlab.net/training/keyboard-input/visibility.html

当输入的焦点进入或者离开文本框时,Android会适时的显示或隐藏输入法。系统还会决定UI及文本框如何出现在输入法的上方。比如,当垂直方向上的可用空间非常紧张时,那么文本框可能就会填充输入法上方的整个区域。对于大多数的APP来说,这样的默认行为是它们所需要的。

不过在另一些情况中,你可能需要直接控制输入法的显示方式,以及需要在输入法可见的时候控制UI的排布方式。那么这节课主要就是介绍如何实现这些。

在Activity启动的时候显示输入法

尽管在Activity启动的时候Android将焦点给了第一个文本框,但是它是不会触发输入法弹出的。这样的行为是符合正常的习惯的,因为进入文本框可能不会Activity启动后的首要任务。不管怎么说,如果进入文本框是Activity的首要任务的话(比如登录界面),那么你可能希望默认情况下进入Activity后就会弹出输入法。

为了在Activity启动后可以显示输入法,需要在清单文件中对应的Activity的元素中添加属性android:windowSoftInputMode。如下:

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

Note:如果用户的设备含有实体按键,那么软键盘是不会弹出的。

按需求弹出输入法

如果在Activity的生命周期内有这么一个方法:你希望确保在该方法调用后输入法是可见的,那么你可以使用InputMethodManager来将它弹出。

举个例子,下面的方法持有了一个View对象,用户会在这个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);
    }
}

Note: 一旦输入法被弹出,那么最好不要使用代码隐藏它。系统会在用户终止文本框中的任务后将它隐藏或者用户通过系统隐藏了它(比如使用了返回按钮)。

指明你的UI应该如何响应输入法的弹出

当输入法出现在屏幕上时,它会减少APP在屏幕上的使用空间。那么系统会决定如何调整UI的部分区域,但是它可能不是最准确的。为了确保APP拥有最佳的用户体验,应该指明系统如何调整UI。

为了声明Activity的首选方式,应当在项目的清单文件中对应的Activity下添加android:windowSoftInputMode属性,并使用其中一个含有”adjust”的值。

举个例子,为了确保系统可将UI调整到可用区域,应当使用”adjustResize”:

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

除了以上的方法,你还可以使用组合的的方式来声明UI调整规则与输入法的可见性规则:

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

指明”adjustResize”是很重要的:如果UI中含有一些用户可能需要迅速访问的按键或者需要操作的文本框的话。举个例子,如果你使用相对布局将一个按钮放置到了屏幕的底部,那么使用”adjustResize”调整布局可以使该按钮出现在输入法的顶部,这样在输入完成之后就可以直接点击该按钮。

目录
相关文章
|
5月前
|
存储 数据库 Android开发
🔥Android Jetpack全解析!拥抱Google官方库,让你的开发之旅更加顺畅无阻!🚀
【7月更文挑战第28天】在Android开发中追求高效稳定的路径?Android Jetpack作为Google官方库集合,是你的理想选择。它包含多个独立又协同工作的库,覆盖UI到安全性等多个领域,旨在减少样板代码,提高开发效率与应用质量。Jetpack核心组件如LiveData、ViewModel、Room等简化了数据绑定、状态保存及数据库操作。引入Jetpack只需在`build.gradle`中添加依赖。例如,使用Room进行数据库操作变得异常简单,从定义实体到实现CRUD操作,一切尽在掌握之中。拥抱Jetpack,提升开发效率,构建高质量应用!
94 4
|
6月前
|
Java 开发工具 Android开发
Android Studio 导出JavaDoc文档
Android Studio 导出JavaDoc文档
190 0
|
7月前
|
存储 安全 文件存储
Android OTA升级后输入法异常和应用丢失的分析
Android OTA升级后输入法异常和应用丢失的分析
134 1
|
7月前
|
JSON Android开发 数据格式
Android框架-Google官方Gson解析,android开发实验报告总结
Android框架-Google官方Gson解析,android开发实验报告总结
|
7月前
|
Java 开发工具 Maven
Android SDK开发的那些事(1),已整理成文档
Android SDK开发的那些事(1),已整理成文档
|
7月前
|
存储 前端开发 测试技术
Android 官方架构中的 UseCase 该怎么写?
Android 官方架构中的 UseCase 该怎么写?
182 0
|
移动开发 小程序 Android开发
|
SQL 数据库 Android开发
Android官方数据库框架-Room
Android官方数据库框架-Room
881 0
|
7月前
|
Java 开发工具 Android开发
SLS:使用 OTel 官方 SDK 采集 Android、iOS Trace 数据实践
本文介绍了使用 OTel 官方 SDK 采集 Android、iOS Trace 数据实践。
488 7
SLS:使用 OTel 官方 SDK 采集 Android、iOS Trace 数据实践
|
Java Maven Android开发
Android自定义一个车牌字母选择键盘
和省份简称键盘不同的是,数据源上和边距有所差别之外,其他的实现方式均是一样的,采用外部垂直LinearLayout,内部多个横向的LinearLayout的搭配方式。
102 0