UI效果(6): EditText与软键盘
EditText需要注意的地方很多,所以做个小结。
该篇博客会持续更新。
下面的内容来自:http://www.learningandroid.net/blog/,自己稍加修改。
下面的LAYOUT定义文件举了一些例子说明inputType和imeOptions的使用。
<EditText android:id="@+id/textNormal"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Normal text"android:inputType="text"android:imeOptions="actionNext"/><EditText android:id="@+id/textInteger"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Integer only"android:inputType="number"android:imeOptions="actionNext"/><EditText android:id="@+id/textDecimal"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Decimal only"android:inputType="numberDecimal"android:imeOptions="actionNext"/><EditText android:id="@+id/textPhone"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Phone number"android:inputType="phone"android:imeOptions="actionNext"/><EditText android:id="@+id/textEmail"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Email"android:imeOptions="actionSend"android:inputType="textEmailAddress"/><EditText android:id="@+id/textSite"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Web Site"android:imeOptions="actionDone"android:inputType="textUri"/>
可看到,随着inputType的不同,输入法的键盘也自动跟着发生变化,并且在inputType=number时,是不允许输入英文字符的。
另外,在inputType属性中,textCapCharacters是大写字符 textCapWord是单词首字母大写。
注意:android:phoneNumber,android:numeric,这几个属性均已被废弃,不少输入法已经不再支持。直接使用inputType比较好。
另外,在做这种调试时,最好使用Google拼音,或Android键盘来进行,否则imeOptions可能不能正常显示,比如百度输入法在我删除它之前就一直不支持imeOptions。
我们经常会碰到在输入的时候,输入法窗口盖住需要点击的按钮,只有用Back键关闭输入法才能按到这个按钮。我们可以通过修改窗口的输入法模式来解决。
另一个可能会有用的模式选项是在窗口刚打开时,是否立刻弹出输入法窗口还是等用户点击文本框后再弹出。后者通常适用于登录画面。
文件名:input_method_test.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollViewxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:fillViewport="true"
><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><EditText android:id="@+id/textNormal"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Normal text"android:inputType="text"android:imeOptions="actionNext"/><EditText android:id="@+id/textInteger"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Integer only"android:inputType="number"android:imeOptions="actionNext"/><EditText android:id="@+id/textDecimal"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Decimal only"android:inputType="numberDecimal"android:imeOptions="actionNext"/><EditText android:id="@+id/textPhone"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Phone number"android:inputType="phone"android:imeOptions="actionNext"/><EditText android:id="@+id/textEmail"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Email"android:imeOptions="actionSend"android:inputType="textEmailAddress"/><EditText android:id="@+id/textSite"android:layout_width="fill_parent" android:layout_height="wrap_content"android:hint="Web Site"android:imeOptions="actionDone"android:inputType="textUri"/><LinearLayoutandroid:orientation="horizontal"android:layout_width="fill_parent" android:layout_height="wrap_content"><ToggleButton android:id="@+id/btnResize"android:layout_width="wrap_content" android:layout_height="wrap_content"android:textOff="Pan" android:textOn="Resize"/><ToggleButton android:id="@+id/btnHidden"android:layout_width="wrap_content" android:layout_height="wrap_content"android:textOff="Visible" android:textOn="Hidden"/></LinearLayout></LinearLayout>
</ScrollView>
最后的2个ToogleButton,这就是我们用来控制软键盘的2个开关。再贴出代码:
文件名:InputMethodTestActivity.java
package mark.zhang;import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.CompoundButton;
import android.widget.ToggleButton;/*** 输入框的输入法控制和输入法窗口自身的控制*/
public class InputMethodTestActivity extends Activity implementsCompoundButton.OnCheckedChangeListener {SharedPreferences prefs;private static final String PREF_ADJUST = "ADJUST";private static final String PREF_HIDDEN = "HIDDEN";private static final String PREF_PACKAGE = "INPUT_METHOD_TEST";// ToggleButton实例及其对应的参数ToggleButton btnResize;ToggleButton btnHidden;private boolean resize;private boolean hidden;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.input_method_test);// 取得保存的参数值,并且以此设置本窗口的输入法显示模式prefs = getSharedPreferences(PREF_PACKAGE, MODE_PRIVATE);resize = prefs.getBoolean(PREF_ADJUST, false);hidden = prefs.getBoolean(PREF_HIDDEN, false);setupInputWindow();// 设置2个Toggle ButtonbtnResize = (ToggleButton) findViewById(R.id.btnResize);btnResize.setChecked(resize);btnResize.setOnCheckedChangeListener(this);btnHidden = (ToggleButton) findViewById(R.id.btnHidden);btnHidden.setChecked(hidden);btnHidden.setOnCheckedChangeListener(this);}@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {// 任何时候toggle button变化时,均会保存属性,并且重设input属性resize = btnResize.isChecked();hidden = btnHidden.isChecked();SharedPreferences.Editor editor = prefs.edit();editor.putBoolean(PREF_ADJUST, resize);editor.putBoolean(PREF_HIDDEN, hidden);editor.commit();setupInputWindow();}/*** 根据resize和hidden参数来设置输入法窗口的属性*/private void setupInputWindow() {int inputMode = resize ? WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE: WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN;inputMode = inputMode| (hidden ? WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN: WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);getWindow().setSoftInputMode(inputMode);}
}
另外还有几个参数,API中相关说明如下:
- visibility states: SOFT_INPUT_STATE_UNSPECIFIED, SOFT_INPUT_STATE_UNCHANGED, SOFT_INPUT_STATE_HIDDEN, SOFT_INPUT_STATE_ALWAYS_VISIBLE, or SOFT_INPUT_STATE_VISIBLE.
- adjustment options: SOFT_INPUT_ADJUST_UNSPECIFIED, SOFT_INPUT_ADJUST_RESIZE, or SOFT_INPUT_ADJUST_PAN.
2个开关均为开的情况下的截图:
可以看到由于使用了Resize模式,整个Activity的大小被缩小了,让出了输入法窗体的空间,并且由Activity本身使用了ScrollView,所以Activity可以被滚动到最下方。
文章链接:
http://www.learningandroid.net/blog/foundation/input-method-control-in-edittext/
http://www.learningandroid.net/blog/foundation/input-method-soft-mode/
UI效果(6): EditText与软键盘相关推荐
- 对EditText的软键盘进行监听-----android:imeOptions
在android发开过程中,有时候需要对EditText的软键盘进行监听. 当点击软键盘回车位置按键的时候,需要实现 完成.前进.下一项.搜索.发送或其他功能,这就需要开发者对软键盘回车的点击事件进行 ...
- Android EditText将软键盘的回车改为搜索,并监听
需求为: 当用户在界面内点击输入框,弹出键盘,键盘右下角示意为"搜索"按钮 当用户输入内容后,点击搜索按钮将进行关键词搜索 当用户没有输入内容点击搜索按钮,将收起键盘,回到界面(这 ...
- 全面解析Android EditText以及软键盘的设置
原创文章,转载请注明出处:http://blog.csdn.net/myth13141314/article/details/54972337 软键盘的行为可以通过修改对应Activity的andro ...
- android edittext 把软键盘确认键改为搜索键
EditText搜索时没有搜索按钮,而是调用软件盘上的按钮,这时便需要改变软键盘的确定键为"搜索",并监听该键的按钮. 在xml文件中添加: android:imeOptions= ...
- edittext 软键盘上方_Android 软键盘的全面解析,让你不再怕控件被遮盖
原标题:Android 软键盘的全面解析,让你不再怕控件被遮盖 作者 | Vander丶 编辑 | 苏宓 微信公众号 | mobilehub 背景 Android软键盘这块从我入职到现在,是一个一直纠 ...
- Android使用xml自定义软键盘效果(附源码)
Android使用xml自定义软键盘效果原理: 1,软键盘其实是个控件,使用android.inputmethodserver.KeyboardView类定义. 2,主布局中使用帧布局,当我们需要显示 ...
- AlertDialog里面的EditText无法弹出软键盘
工作的时候遇到了一个问题,AlertDialog里面的EditText无法弹出软键盘,做了一个弹框,弹框中有个EdiText用于用户输入使用,调试的时候,弹框弹出EditText也有光标在闪动,但是怎 ...
- EditText上关闭软键盘但保留闪烁游标的方法
今天碰到一个需求,在EditText获得焦点时不自动弹出软键盘,但是仍要保留闪烁的游标. 先在网上搜了下关闭软键盘,很多方法是这样的: InputMethodManager imm = (InputM ...
- Android软键盘的全面解析,让你不再怕控件被遮盖
本文转载自:https://blog.csdn.net/l540675759/article/details/74528641 背景 1.Android软键盘这块从我入职到现在,是一个一直纠缠我的问题 ...
最新文章
- hdu 6185 Covering 矩阵快速幂
- android gradle 设置 output文件名,如何使用gradle在APK文件名中设置versionName?
- Python的zip
- ES6新特性之了解ES6以及其发展历史
- ASP.NET Ajax编程技术学习
- caffe 中的一些参数介绍
- 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
- div图片垂直居中 如何使div中图片垂直居中
- -拳王虚拟项目公社:虚拟产品自动赚钱技术 小白快速赚到钱的秘方
- python智慧树章节答案_Python程序设计_知到智慧树_章节答案
- Ubuntu 18.04配置 apache https 访问
- 【剑指offer】31、栈的压入和弹出序列
- 51单片机(STC15W408AS)映射printf函数 串口收发实现
- 图片水印如何去除,怎样处理带水印的图片
- 光电耦合器MOC3041
- IEEE Conference Template Letter
- 5、Horizon 桌面模板机安装配置
- C语言程序设计-现代方法 第二版 第6.1小节 显示平方表
- 杀人游戏-Tarjan
- python selenium爬取kuku漫画
热门文章
- 「一道面试题」输入URL到渲染全面梳理中-页面渲染篇
- c语言程序for循环处设断点,期中总结
- 【毕业设计】单片机家用燃气的可视化实时监控报警仪 - 物联网 嵌入式 stm32
- 非常值得欣赏的15个HTML5网站
- 探索<赛博朋克>风格游戏美术
- English语法_人称代词
- druid.io中文版文档
- 严恭敏老师PSINS工具箱解读——test_SINS_GPS_153
- NVIDIA-XAVIER-NX 连接wifi、添加arm软件源、安装arm中文输入法、安装ros-melodic、nomachine远程控制界面、固定有线网卡静态ip
- 如何使用peakview软件查看AB SCIEX 质谱下机数据