EditText,这篇就够了

###前言
EditText这个控件,是程序和用户沟通桥梁,它本身也定义了许多的方法,来满足形形色色的需求,这里进行汇总,难免会不全,请留言补充,谢谢!这里首先介绍过时的方法,在分类介绍,方便查阅。
###过时的方法
android:numeric

可以选择:
decimal:浮点数
interger:正整数
signed:可以负数
可以让EditText接收一个数字,回车键也变成了“完成”
比如,用decimal,则是55.54,而不是55.54.54

android:password="true"

设置是否以密文的形式显示输入的文本,可以用android:inputType中属性代替,后面介绍。

android:phoneNumber=”true”

这里输入电话号码,但是过时了,另外这里不具有判断手机号是否合适,只是打开数字键盘罢了,只能输入数字

android:editable="false"

设置EditText是否可以编辑,但是也是过时的,有提示说是inputType="none"代替,但是效果不是太好

android:singleLine

设置为false,会自动换行,但是该属性已经过时,可以用android:maxLines=”1”属性代替

###基础方法
需要注意,EditText上面有两块内容,一个是提示语,一个是用户输入的字

android:hint

显示提示文本,当用户点击时候,还有,只有输入完新的文本之后就会消失

android:textColorHint

设置提示文本的颜色

android:textColor

设置文本颜色(用户输入的)

android:textSize

设置文本字体大小(可以控制提示文本和用户输入的文本)

android:textColorHiglight

被选中字体的颜色,默认是Theme中的colorAccent中的颜色,这个是针对的,当用户用手长按住用户输入的内容,就会出来选中区域,用户可以选择剪切,粘贴之类的行为,而选中区域显示的颜色,就是这个属性定义的颜色

android:background

设置EditText背景,@null,设置的背景是透明,但是只要设置了背景色之后,EditText那条线就会消失,可以发现,不管是弄成什么颜色,那条线就没了

###针对于字体,光标,行距之类
android:textStyle

置文本字体样式,bold(加粗),italic(倾斜)、normal(正常,默认显示这个),这个控制的是提示文本和用户输入的文本,都控制。

android:textAlignment

设置EditText中文本显示的位置,
center:居中,
inherit:默认的,在右边显示,
viewStart:居左显示,
viewEnd:居右显示,
textStart:居左显示,
textEnd:居右显示
可以发现各有两个,前面view开头的是在最低十七,后面text开头是在最低14,
还需要注意是,这个针对于提示文字还有输入内容都管用

android:textCursorDrawable

设置光标的颜色,这里有一个很大的误区,修改光标的颜色,并不是用颜色,而是用shape标签修饰的drawable图片来完成,,但是可以通过@null和android:cursorVisible=”true”,让光标不显示,
其实经过自己测试,如果你错误的用了android:textCursorDrawable="#ffff44"之类的,那么光标也会消失,但是,并不会有你想要的效果,具体的shape,如下面:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size android:width="20dp" />
    <solid android:color="#2b6ad4" />
</shape>

android:textScaleX

设置文本的水平缩放系数,就是说,将提示文本和输入文本水平拉伸,
下面有一个放大了三倍效果的图和原来的进行比较:

这里写图片描述


这里写图片描述

android:typeface:

设置提示文本字体,和前面的斜体、加粗什么不一样哦,这个是针对于宋体、楷体之类的。
Android一共支持四中字体,sans字体、serifis字体、monospace字体、默认字体、
如何使用别的字体,
首先,java文件夹同级下建立assets文件夹,建立fonts文件夹,将ttf字体导入,
代码中:
AssetManager mgr = getAssets();
Typeface tf = Typeface.createFramAsset(mgr,”fonts/xxx.ttf”)
textView.setTypeface(tf);而EditText也是类似的,这里以TextView为例

这里写图片描述

android:lineSpacingExtra与android:lineSpacingMultiplier:

从字面意思上看,就是行与行之间的距离
这两个不同的是,第一个是直接设置值,比如50dp,第二个则是设置倍数,

android:textAppearance:

设置文本的颜色,字体,大小和样式,
一般是:android:textAppearance="?android:attr/textAppearanceLargeInverse"
但是没有看出效果来。

###针对于文本内容
android:digits

设置只接受指定的文本内容,比如设置了0123456这几个数字,那么在弹出软键盘时候,进行输入时候,发现,只有点击上面几个数字才有效果,要不然,点击是没有效果的。Edittext上面的内容也不会变化。

android:maxLength

设置EditText最多接受的文本的个数,比如你设置为2,那么你不管是输入,英文还是数字,加起来只能最多是2个

android:lines与android:maxLines和android:minLines

android:lines:设置EditText显示的行数,设置两行就是显示两行,要想有效果,需要的是height为wrap_content, 
maxLines的EditText最大行数为3行,当输入的内容超过3行后,它形状的大小不会根据输入内容的多少而改变,反正它显示的内容就是3行
而使用minLines的EditText是至它至少显示3行内容(包括内容为空时,可对比图片),当输入的内容超过3行后,它形状的大小根据输入内容的多少而改变。

android:inputType

设置文本的类型,用于帮助输入法显示合适的键盘类型,这个是属于比较重要的应用。
(1)可以设置合适的键盘

text:普通文本键盘(经过测试像表情符号,英文,汉子,数字,标点,加减号都是可以的,并且回车键变成了下一步,这个是默认的)
这里写图片描述

textEmailAddress:带有@字符的普通文本键盘
这里写图片描述

textUri:带有/字符的普通文本键盘
这里写图片描述

number:基本数字键盘
这里写图片描述

phone:电话样式键盘
这里写图片描述

datetime:时间日期
这里写图片描述

data:日期
这里写图片描述

(2)改变输入的内容
textCapSentences:普通的文本键盘,大写每个新句子的第一个字母,没看出来

textCapWord:大写每个单词的正常文本键盘,适合标题和人名

textCapCharachter:暂时没看出来

textAutoCorrect:正常文本键盘,可以纠正拼写错误的字词

textpassword:这个就和password=”true”一样

textMultiLine“普通文本键盘,允许用户输入包含换行字符的长字符串

android:imeOptions
也是关键属性,
设置右下角IME动作与编辑框相关的动作
图片来自网络
关于它的属性和效果在键盘上的,一张图就完全的告诉了。

另外还可以设置监听

mEditText = (EditText) findViewById(R.id.my);
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  @Override
  public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                boolean is = false;
                if (i == EditorInfo.IME_ACTION_SEND) {//针对于不同的点击动作
                    Toast.makeText(MainActivity.this, "点击actionSearch执行的操作 ", Toast.LENGTH_SHORT).show();
                    is = true;
                }
                return is; //如果你想让键盘消失的话,那么这里直接返回false,不用进行拦截了.如果返回true 那么键盘不会消失.
            }
        });
//但是,需要注意:使用imeOptions时,如果你没有使用inputType属性,是不会有效果的.如果你还在使用Eclipse开发,可能还会用到android:singleLine="true"这一属性

###如何显示隐藏键盘

1、//隐藏软键盘
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);   
2、//显示软键盘,控件ID可以是EditText,TextView
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(控件ID, 0); 

###如何在进入一个Actiivty的时候不自动打开虚拟键盘

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

或者是:

<activity
  ...
  android:windowSoftInputMode="stateHidden" >

###解決弹出Dialog又再自动弹出虚拟键盘如果Dialog中含有EditorText

AlertDialog dialog =new AlertDialog.Builder(this).setView(et_url).create();
        dialog.getWindow().setSoftInputMode(
        WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
        dialog.show();
--------------------- 
作者:舵哥 
来源:CSDN 
原文:https://blog.csdn.net/liduolp/article/details/48491579 
版权声明:本文为博主原创文章,转载请附上博文链接!
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值