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

原文地址: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”调整布局可以使该按钮出现在输入法的顶部,这样在输入完成之后就可以直接点击该按钮。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python用schedule模块实现定时任务

python用schedule模块实现定时任务 import schedule import timedef test():print("Im working...") def test2(): print("Im working... in job2")# 每10分钟执行一次job函数 schedule.every(10).minutes.do(test) # 每10秒执行一次job函数 schedule.…

天天说常识推理,究竟常识是什么?

文 | 花小花Posy写这篇文章的时候&#xff0c;我去搜了搜常识的例子。“睁开眼睛打喷嚏是不可能的。&#xff08;还真没留意。&#xff09;““北极熊是左撇子。“”长颈鹿没办法咳嗽。”呃&#xff1f;好吧&#xff0c;我需要补一补自己的常识。那么这些所谓的“常识”真的是常…

论文笔记 | Counterfactual Samples Synthesizing for Robust VQA

论文笔记整理&#xff1a;窦春柳&#xff0c;天津大学硕士。来源&#xff1a;CVPR 2020链接&#xff1a;https://openaccess.thecvf.com/content_CVPR_2020/papers/Chen_Counterfactual_Samples_Synthesizing_for_Robust_Visual_Question_Answering_CVPR_2020_paper.pdf动机当今…

Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus

背景 对于Android系统来说&#xff0c;消息传递是最基本的组件&#xff0c;每一个App内的不同页面&#xff0c;不同组件都在进行消息传递。消息传递既可以用于Android四大组件之间的通信&#xff0c;也可用于异步线程和主线程之间的通信。对于Android开发者来说&#xff0c;经常…

Android官方开发文档Training系列课程中文版:键盘输入处理之处理键盘按键

原文地址&#xff1a;http://android.xsoftlab.net/training/keyboard-input/commands.html 当用户将焦点给到可编辑文本的View时&#xff0c;例如EditText这种&#xff0c;并且该设备还拥有实体键盘&#xff0c;那么所有的输入都会被系统处理。然而&#xff0c;如果你希望可以…

MYSQL返回指定时间间隔函数DATE_SUB和TO_DAYS详解

现在北京时间&#xff1a;2021年1月25日 11点 select time,content from shsqsj where time > DATE_SUB(Now(),INTERVAL 2 DAY); 返回的数据是&#xff1a;2021年1月23日23日11点到现在时刻&#xff08;2021年1月25日 11点 &#xff09;的数据。更多请参考 DATE_SUB函数 现…

论文浅尝 - ICLR2020 | 知道什么、如何以及为什么:基于方面的情感分析的近乎完整的解决方案...

论文笔记整理&#xff1a;余海阳&#xff0c;浙江大学硕士&#xff0c;研究方向为知识图谱、自然语言处理。链接&#xff1a;https://arxiv.org/abs/1911.01616动机基于目标的情感分析或基于方面的情感分析&#xff08;ABSA&#xff09;是指在细粒度的层次上解决各种情感分析任…

全栈深度学习第5期: 神经网络调试技巧

一起追剧鸭简介Berkeley全栈深度学习追剧计划是由夕小瑶的卖萌屋发起的优质公开课打卡项目&#xff0c;通过微信群为同期追剧的小伙伴提供交流平台。关于该计划的详请见这里。Berkeley深度学习追剧群目前已有1000小伙伴加入&#xff0c;公众号后台回复口令 深度学习追剧 入群。…

LeetCode 22. 括号生成(回溯/DP)

文章目录1. 题目2. 解题2.1 暴力回溯2.2 DP1. 题目 给出 n 代表生成括号的对数&#xff0c;请你写出一个函数&#xff0c;使其能够生成所有可能的并且有效的括号组合。 例如&#xff0c;给出 n 3&#xff0c;生成结果为&#xff1a;["((()))","(()())",…

Android官方开发文档Training系列课程中文版:后台服务之IntentService的创建

原文地址:http://android.xsoftlab.net/training/run-background-service/index.html 引言 除非特别指定&#xff0c;否则所有的操作都是在UI线程中执行的。不过这会引起问题&#xff0c;因为长时间的耗时操作会妨碍UI线程的运行。这会惹恼用户&#xff0c;并可能会引起系统错…

美团服务体验平台对接业务数据的最佳实践-海盗中间件

背景 移动互联网时代&#xff0c;用户体验为王。美团服务体验平台希望能够帮助客户解决在选、购、用美团产品过程中遇到的各种问题&#xff0c;真正做到“以客户为中心”&#xff0c;为客户排忧解难。但服务体验平台内部只维护客户的客诉数据&#xff0c;为了精准地预判和更好地…

中文近义词工具包:Synonyms

Synonyms Chinese Synonyms for Natural Language Processing and Understanding. 更好的中文近义词&#xff1a;聊天机器人、智能问答工具包。 synonyms可以用于自然语言理解的很多任务&#xff1a;文本对齐&#xff0c;推荐算法&#xff0c;相似度计算&#xff0c;语义偏移…

惊了,掌握了这个炼丹技巧的我开始突飞猛进

文 | 夕小瑶从不拖稿的小夕今天在知乎上刷到一个问题&#xff1a;哈&#xff1f;一向求真务实、高逼格讨论的知乎画风怎么突然就不一样了。我以为回答区会有这张图&#xff1a;▲如来神掌结果竟然没有&#xff01;知乎果然没有让我失望&#xff0c;还是一如既往的认真、严谨、有…

LeetCode 876. 链表的中间结点(快慢指针)

1. 题目 给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 2. 解题 快慢指针法 class Solution { public:ListNode* middleNode(ListNode* head) {ListNode *fast head, *slow head;while(f…

Android官方开发文档Training系列课程中文版:后台服务之IntentService的使用

原文地址&#xff1a;http://android.xsoftlab.net/training/run-background-service/send-request.html 上节课我们学习了如何创建IntentService。这节课我们主要学习如何通过Intent使IntentService执行工作请求。Intent可以将任何数据交给IntentService处理。你可以在Activi…

技术动态 | 多模态知识图谱

本文转载自漆桂林老师的知乎专栏。原文链接&#xff1a;https://zhuanlan.zhihu.com/p/163278672作者&#xff1a;郑秋硕&#xff0c;漆桂林&#xff0c;王萌知识图谱技术已经被广泛用于处理结构化数据&#xff08;采用本体D2R技术&#xff09;和文本数据&#xff08;采用文本信…

美团配送系统架构演进实践

写在前面 美团配送自成立以来&#xff0c;业务经历了多次跨越式的发展。业务的飞速增长&#xff0c;对系统的整体架构和基础设施提出了越来越高的要求&#xff0c;同时也不断驱动着技术团队深刻理解业务、准确定位领域模型、高效支撑系统扩展。如何在业务高速增长、可用性越来越…

Python字符串模糊匹配库FuzzyWuzzy

Python字符串模糊匹配库FuzzyWuzzy 在计算机科学中&#xff0c;字符串模糊匹配&#xff08;fuzzy string matching&#xff09;是一种近似地&#xff08;而不是精确地&#xff09;查找与模式匹配的字符串的技术。换句话说&#xff0c;字符串模糊匹配是一种搜索&#xff0c;即使…

机器学习梗图大赏

文 | 白鹡鸰图 | 白鹡鸰 小轶大家好呀&#xff0c;我是日常遭到小轶摁头赶稿的白鹡鸰&#xff5e;最近的投稿高峰期各位都过得如何呢&#xff1f;白鹡鸰要偷偷爆料&#xff0c;最近的小轶可是超级辛苦的&#xff5e;不过白鹡鸰还很轻松&#xff0c;毕竟已经决定赶300天以后的dd…

Android官方开发文档Training系列课程中文版:后台服务之响应IntentService的处理结果

原文地址&#xff1a;https://developer.android.com/training/run-background-service/report-status.html 这节课主要学习如何将IntentService中的执行结果返回给请求点。一种推荐的方式就是使用 LocalBroadcastManager来实现&#xff0c;它会将所广播的Intent限制在APP内部…