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与软键盘相关推荐

  1. 对EditText的软键盘进行监听-----android:imeOptions

    在android发开过程中,有时候需要对EditText的软键盘进行监听. 当点击软键盘回车位置按键的时候,需要实现 完成.前进.下一项.搜索.发送或其他功能,这就需要开发者对软键盘回车的点击事件进行 ...

  2. Android EditText将软键盘的回车改为搜索,并监听

    需求为: 当用户在界面内点击输入框,弹出键盘,键盘右下角示意为"搜索"按钮 当用户输入内容后,点击搜索按钮将进行关键词搜索 当用户没有输入内容点击搜索按钮,将收起键盘,回到界面(这 ...

  3. 全面解析Android EditText以及软键盘的设置

    原创文章,转载请注明出处:http://blog.csdn.net/myth13141314/article/details/54972337 软键盘的行为可以通过修改对应Activity的andro ...

  4. android edittext 把软键盘确认键改为搜索键

    EditText搜索时没有搜索按钮,而是调用软件盘上的按钮,这时便需要改变软键盘的确定键为"搜索",并监听该键的按钮. 在xml文件中添加: android:imeOptions= ...

  5. edittext 软键盘上方_Android 软键盘的全面解析,让你不再怕控件被遮盖

    原标题:Android 软键盘的全面解析,让你不再怕控件被遮盖 作者 | Vander丶 编辑 | 苏宓 微信公众号 | mobilehub 背景 Android软键盘这块从我入职到现在,是一个一直纠 ...

  6. Android使用xml自定义软键盘效果(附源码)

    Android使用xml自定义软键盘效果原理: 1,软键盘其实是个控件,使用android.inputmethodserver.KeyboardView类定义. 2,主布局中使用帧布局,当我们需要显示 ...

  7. AlertDialog里面的EditText无法弹出软键盘

    工作的时候遇到了一个问题,AlertDialog里面的EditText无法弹出软键盘,做了一个弹框,弹框中有个EdiText用于用户输入使用,调试的时候,弹框弹出EditText也有光标在闪动,但是怎 ...

  8. EditText上关闭软键盘但保留闪烁游标的方法

    今天碰到一个需求,在EditText获得焦点时不自动弹出软键盘,但是仍要保留闪烁的游标. 先在网上搜了下关闭软键盘,很多方法是这样的: InputMethodManager imm = (InputM ...

  9. Android软键盘的全面解析,让你不再怕控件被遮盖

    本文转载自:https://blog.csdn.net/l540675759/article/details/74528641 背景 1.Android软键盘这块从我入职到现在,是一个一直纠缠我的问题 ...

最新文章

  1. hdu 6185 Covering 矩阵快速幂
  2. android gradle 设置 output文件名,如何使用gradle在APK文件名中设置versionName?
  3. Python的zip
  4. ES6新特性之了解ES6以及其发展历史
  5. ASP.NET Ajax编程技术学习
  6. caffe 中的一些参数介绍
  7. 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
  8. div图片垂直居中 如何使div中图片垂直居中
  9. -拳王虚拟项目公社:虚拟产品自动赚钱技术 小白快速赚到钱的秘方
  10. python智慧树章节答案_Python程序设计_知到智慧树_章节答案
  11. Ubuntu 18.04配置 apache https 访问
  12. 【剑指offer】31、栈的压入和弹出序列
  13. 51单片机(STC15W408AS)映射printf函数 串口收发实现
  14. 图片水印如何去除,怎样处理带水印的图片
  15. 光电耦合器MOC3041
  16. IEEE Conference Template Letter
  17. 5、Horizon 桌面模板机安装配置
  18. C语言程序设计-现代方法 第二版 第6.1小节 显示平方表
  19. 杀人游戏-Tarjan
  20. python selenium爬取kuku漫画

热门文章

  1. 「一道面试题」输入URL到渲染全面梳理中-页面渲染篇
  2. c语言程序for循环处设断点,期中总结
  3. 【毕业设计】单片机家用燃气的可视化实时监控报警仪 - 物联网 嵌入式 stm32
  4. 非常值得欣赏的15个HTML5网站
  5. 探索<赛博朋克>风格游戏美术
  6. English语法_人称代词
  7. druid.io中文版文档
  8. 严恭敏老师PSINS工具箱解读——test_SINS_GPS_153
  9. NVIDIA-XAVIER-NX 连接wifi、添加arm软件源、安装arm中文输入法、安装ros-melodic、nomachine远程控制界面、固定有线网卡静态ip
  10. 如何使用peakview软件查看AB SCIEX 质谱下机数据