Android控件大全之EditText

作者: lovesosoi | 来源:发表于2017-07-04 20:51 被阅读237次

    部分参考了:

    http://blog.csdn.net/heng615975867/article/details/16114557

    http://blog.csdn.net/wangfayinn/article/details/8080740

    导读:本篇文章主要讲述了EditText 99%的属性介绍。一些使用过程中遇到的小问题,总结出来,如果你也有解决的EditText小问题,欢迎留言,我们一起互相学习~

    1.设置提示字

    Hint

    textHintColor

    2.设置输入类型

    inputTypt

    可输入类型有:

    android:inputType=”none”

    android:inputType=”text”

    android:inputType=”textCapCharacters” 字母大写

    android:inputType=”textCapWords” 首字母大写

    android:inputType=”textCapSentences” 仅第一个字母大写

    android:inputType=”textAutoCorrect” 自动完成

    android:inputType=”textAutoComplete” 自动完成

    android:inputType=”textMultiLine” 多行输入

    android:inputType=”textImeMultiLine” 输入法多行(如果支持)

    android:inputType=”textNoSuggestions” 不提示

    android:inputType=”textUri” 网址

    android:inputType=”textEmailAddress” 电子邮件地址

    android:inputType=”textEmailSubject” 邮件主题

    android:inputType=”textShortMessage” 短讯

    android:inputType=”textLongMessage” 长信息

    android:inputType=”textPersonName” 人名

    android:inputType=”textPostalAddress” 地址

    android:inputType=”textPassword” 密码

    android:inputType=”textVisiblePassword” 可见密码

    android:inputType=”textWebEditText” 作为网页表单的文本

    android:inputType=”textFilter” 文本筛选过滤

    android:inputType=”textPhonetic” 拼音输入

    //数值类型

    android:inputType=”number” 数字

    android:inputType=”numberSigned” 带符号数字格式

    android:inputType=”numberDecimal” 带小数点的浮点格式

    android:inputType=”phone” 拨号键盘

    android:inputType=”datetime” 时间日期

    android:inputType=”date” 日期键盘

    android:inputType=”time” 时间键盘

    3文字相关属性

    Gravity:设置文本位置:

    singleLine:单行

    maxheight:最大高度

    maxWidth:最大宽度

    maxLength 10个字符:最大文字长度

    text:示的文字

    textColor:显示文字的颜色

    textSize:显示文字的大小

    textDirection:文字输入方向

    capitalize:设置英文输入(过时)

    sentences:第一个字母大写

    words:每一个单词首字母大小,用空格区分单词

    haracters:每一个英文字母都大写

    textScaleX:设置文字间间隔

    textColorLink:文字链接的颜色

    textColorHighlight被选中的底色

    typeface:设置字体()

    textStyle:设置字形(加粗/斜体/both)

    textAppearance:引用系统自动带的外观

    shadowDx:设置阴影横坐标开始位置

    shadowDy:设置阴影纵坐标开始位置

    shadowColor:指定文本阴影的颜色

    shadowradius:设置阴影半径,设置为0.1变成字体的颜色

    4.其他属性

    TextCursorDrawable=”@null”:取消光标

    bufferType:gettext返回值得类型

    cursorVisible:显示/隐藏光标

    digits:允许输入哪些字符

    drawableBottom:下方放一个图片

    drawableLeft:左方放一个图片

    drawableRight:右方放一个图片

    drawableTop:上方放一个图片

    drawablePadding和上方属性一起用 设置文字与图片间的距离

    editable:是否可以编辑

    editorExtras:特定输入法的扩张 (意义不明)

    ellipsize:文字过长控件如何显示(测试时 没有效果,效果不明)

    inputMethod:指定输入法(过时)

    includeFontPadding:文本是否包含顶部和底部的额外空白

    ems:当layout_width=”wrap_content”时 设置ems时有效,只是确定editText的长度,不是输入的字符长度!

    MaxEms:属性同ems当此属性出现,覆盖ems属性

    minEms:属性同Ems,当此属性出现,覆盖ems属性

    lines:设置行数

    maxLines:设置最大行数

    minLines:设置最小行数

    scrollHorizontally:设置文本超出textView是否出现横拉条

    selectAllOnFocus:如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置

    linksClickable:设置链接是否点击链接

    linesSpacingExtra:设置行间距

    lineSpacingMultplier:设置行间距的倍数

    5.改变软键盘部分按钮及逻辑

    a.只改变样式

    需要设置两条属性

    1.SingleLine=”true”

    2.android:imeOptions="flagNoExtractUi"

    ***设置maxlines虽然也是只能输入一行,但是没有效果***

    android:imeOptions="flagNoExtractUi"//使软键盘不全屏显示,只占用一部分屏幕同时,这个属性还能控件软键盘右下角按键的

    android:imeOptions="actionNone"//输入框右侧不带任何提示

    android:imeOptions="actionGo"//右下角按键内容为'开始'

    android:imeOptions="actionSearch"//右下角按键为放大镜图片,搜索

    android:imeOptions="actionSend"//右下角按键内容为'发送'

    android:imeOptions="actionNext"//右下角按键内容为'下一步'

    android:imeOptions="actionDone"//右下角按键内容为'完成'

    b.改变样式后触发逻辑

    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {

    @Override

    public boolean onEditorAction(TextView v,int actionId, KeyEvent event) {

    if (actionId ==EditorInfo.IME_ACTION_SEND) {

    Log.e(TAG, "onEditorAction:" + "tanchule");

    return true;

    }

    return false;

    }

    });

    6.页面内EditText抢占焦点问题

    在父容器设置

    android:focusable="true"

    android:focusableInTouchMode="true"

    设置成功后就不会抢占焦点

    6.当页面内已经弹出软键盘时,点击有finish()的按钮,页面back掉,但是软键盘还在

    解决思路:Finish前调用隐藏键盘的代码即可

    InputMethodManager imm =(InputMethodManager)

    Main5Activity.this.getSystemService(Context.INPUT_METHOD_SERVICE);

    if (imm == null) return;

    imm.hideSoftInputFromWindow(btn.getWindowToken(),0);

    7.当软键盘弹出时,将底部控件顶上来

    解决:在清单文件里对应的Activity上增加这句

    android:windowSoftInputMode="adjustUnspecified|stateHidden"

    **windowSoftInputMode所有属性**

    "stateUnspecified"软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。这个是为了软件盘行为默认的设置。

    "stateUnchanged"软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时。

    "stateHidden"当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。

    "stateAlwaysHidden"软键盘总是被隐藏的,当该Activity主窗口获取焦点时。

    "stateVisible"软键盘是可见的,当那个是正常合适的时(当用户导航到Activity主窗口时)。

    "stateAlwaysVisible"当用户选择这个Activity时,软键盘是可见的——也就是,也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。

    "adjustUnspecified"它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。

    "adjustResize"该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间。

    "adjustPan"该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。

    关注微信公众号MAndroid,更多控件小知识~~

    相关文章

      网友评论

        本文标题:Android控件大全之EditText

        本文链接:https://www.haomeiwen.com/subject/pngxhxtx.html