edittext_edittext去掉下划线 - CSDN
精华内容
参与话题
  • Android开发:EditText组件的基本使用

    千次阅读 2018-10-09 19:32:21
    在Android开发过程中,EditText组件是一个常用控件,也是一个比较重要的组件,它的基本属性需要熟练使用才行,接下来就来讲一下在Android开发中EditText组件的基本使用。 一、EditText简介  ED(EditText的简称)...

          在Android开发过程中,EditText组件是一个常用控件,也是一个比较重要的组件,它的基本属性需要熟练使用才行,接下来就来讲一下在Android开发中EditText组件的基本使用。

    一、EditText简介
           ED(EditText的简称)在开发中也是经常使用到而且比较重要的一个控件,它是用户跟应用进行数据传输的窗口,比如实现一个登陆界面, 需要用户输入账号和密码,然后我们开发者获取到用户输入的内容,提交给后台服务器进行判断再做相应的处理。

    二、EditText支持的XML属性以及基础的用法    

    setText(CharSequence text) 设置文本内容

    setTextColor(int color) 设置字体颜色值

    setHint(int resid) 内容为空时候显示的文本

    void setHintTextColor(int color) 内容为空时候显示的文本颜色值

    setInputType(int type)      限制输入类型

    number:整数类型

    numberDecimal:小数点类型

    date:日期类型

    text:文本类型(默认值)

    phone:拨号键盘

    textPassword:密码

    textVisiblePassword:可见密码

    textUri:网址

    setMaxLines(int maxlines) 设置文本的最小行数

    setGravity(int gravity) 设置文本位置,如设置成“center”,文本将居中显示。

    setLines(int lines) 设置文本的行数,设置两行就显示两行,即使第二行没有数据。

    setSingleLine()     true:单行显示 false:可以多行

            EditText示例:开发中常用的登录界面
            首先我们来看布局文件:activity_login.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/main_background"
        tools:context="com.teamosa.Teamosa.mvvm.activity.LoginActivity">

        <EditText
            android:id="@+id/login_accout"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="100dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:drawablePadding="8dp"
            android:drawableLeft="@mipmap/user_account"
            android:hint="请输入手机号码/邮箱地址"
            android:background="@drawable/btn_shape" />

        <EditText
            android:id="@+id/login_password"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:drawablePadding="8dp"
            android:drawableLeft="@mipmap/user_password"
            android:hint="请输入密码"
            android:background="@drawable/btn_shape" />

        <Button
            android:id="@+id/login_login"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="70dp"
            android:layout_marginLeft="@dimen/dp20"
            android:layout_marginRight="@dimen/dp20"
            android:text=“登录”
            android:textColor="@color/white"
            android:background="@drawable/btn_shape"/>
    </LinearLayout>

           以上这两个输入框的使用了EditText的常用属性,值得借鉴的是EditText组件drawableLeft属性设置的图片和hint设置的文字之间的距离。有的时候,需要在文本框里放置icon图片,并且设置默认提示文字的时候,需要设置两者之间的间距,就是之前的手机icon和”请输入手机号“之间的距离。下面再说一下上面没有用到的属性:
            1、android:background=”@null”     输入框无背景 
           2、android:drawableBottom=”@drawable/shape_bottom_line”   底部引入一个shape布局文件,该布局文件就是输入框的下划线。shape_bottom_line.xml内容如下:
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle" >
        <solid android:color="#1E7EE3" />
        <size android:height="1dp" android:width="500dp"/>
    </shape>

        三、EditText的其他功能
           1、监听用户输入的内容. 
           例如,一个搜索框,只要用户输入了内容就去请求服务器,于是就要在Activity里面监听EditeText文本改变事件,具体实现如下所示:
    EditText etOne= (EditText) findViewById(R.id.phone);
    etOne.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    Log.i("And","内容改变之前调用:"+s);
                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    Log.i("And","内容改变,可以去告诉服务器:"+s);
                }

                @Override
                public void afterTextChanged(Editable s) {
                    Log.i("And”,”内容改变之后调用:"+s);
                }


        2、EditText 在左边加入图片,代码如下:  
            Bitmap bitmap = mWebView.getFavicon();
            Drawable drawable = new BitmapDrawable(bitmap);
            drawable = this.getResources().getDrawable(R.drawable.history);
            edit.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
            edit.setText(cur_url);
     
              setCompoundDrawablesWithIntrinsicBounds与setCompoundDrawables的区别:
              setCompoundDrawables画的drawable的宽高是按drawable.setBound()设置的宽高,所以才有The Drawables must already have had setBounds(Rect) called.
             而setCompoundDrawablesWithIntrinsicBounds画的drawable的宽高是按drawable固定的宽高,即通过getIntrinsicWidth()与getIntrinsicHeight()获得,所以才有The Drawables' bounds will be set to their intrinsic bounds.
              查看下面的方法:
    public void setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top,
                Drawable right, Drawable bottom) {
            if (left != null) {
                left.setBounds(0, 0, left.getIntrinsicWidth(), left.getIntrinsicHeight());
            }
            if (right != null) {
                right.setBounds(0, 0, right.getIntrinsicWidth(), right.getIntrinsicHeight());
            }
            if (top != null) {
                top.setBounds(0, 0, top.getIntrinsicWidth(), top.getIntrinsicHeight());
            }
            if (bottom != null) {
                bottom.setBounds(0, 0, bottom.getIntrinsicWidth(), bottom.getIntrinsicHeight());
            }
            setCompoundDrawables(left, top, right, bottom);


        3、获取、设置EditText的文本
             在开发过程中,使用EditText的时候,需要获取到EditText的文本值,其实获得EditText控件的值方法也就是调用EditText的方法,获取文本值,具体步骤如下所示:
             首先,在xml中定义EditText控件editText1;
             然后在activity里面,声明生成一个EditText对象,然后获取文本值即可:
        String str = "";  
        EditText editText1 =(EditText)findViewById(R.id.editText1);  
        str = editText.getText().toString();   //str即为获取的String类型的文本值
        或者用方法  Integer.parseInt(editText.getText().toString());


             
        //将文本框1的文本赋给文本框2          
       

         EditText editText2 =(EditText)findViewById(R.id.editText2);       
       

         editText2.setText(str.toCharArray(), 0, str.length()); 


            以上就是本节全部内容, 欢迎关注三掌柜的微信公众号,欢迎关注!

     

    展开全文
  • EditText属性大全详解

    2019-01-09 17:29:13
    EditText继承关系:View–>TextView–>EditTextEditText的属性很多,这里介绍几个:android:hint="请输入数字!"//设置显示在空间上的提示信息 android:numeric="integer"//设置只能输入...

    EditText继承关系:View–>TextView–>EditText

    EditText的属性很多,这里介绍几个:

    android:hint="请输入数字!"//设置显示在空间上的提示信息
    android:numeric="integer"//设置只能输入整数,如果是小数则是:decimal
    android:singleLine="true"//设置单行输入,一旦设置为true,则文字不会自动换行。
    android:password="true"//设置只能输入密码
    android:textColor = "#ff8c00"//字体颜色
    android:textStyle="bold"//字体,bold, italic, bolditalic
    android:textSize="20dip"//大小
    android:capitalize = "characters"//以大写字母写
    android:textAlign="center"//EditText没有这个属性,但TextView有,居中
    android:textColorHighlight="#cccccc"//被选中文字的底色,默认为蓝色
    android:textColorHint="#ffff00"//设置提示信息文字的颜色,默认为灰色android:textScaleX="1.5"//控制字与字之间的间距
    android:typeface="monospace"//字型,normal, sans, serif, monospace
    android:background="@null"//背景,这里没有,指透明
    android:layout_weight="1"//权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。
    android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外观
    android:layout_gravity="center_vertical"//设置控件显示的位置:默认top,这里居中显示,还有bottom
    
    android:gray="top" //多行中指针在第一行第一位置
    
    et.setSelection(et.length());//调整光标到最后一行
    
    android:autoText //自动拼写帮助
    
    android:capitalize //首字母大写
    
    android:digits //设置只接受某些数字
    
    Android:singleLine//是否单行或者多行,回车是离开文本框还是文本框增加新行
    
    android:numeric //只接受数字
    
    android:phoneNumber //输入电话号码
    
    android:editable //是否可编辑
    
    android:autoLink=”all” //设置文本超链接样式当点击网址时,跳向该网址 
    
    android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。不知道这样理解对不对? 
    

    属性名称描述

    android:autoLink
    设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)

    android:autoText
    如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。

    android:bufferType
    指定getText()方式取得的文本类别。选项editable 类似于StringBuilder可追加字符,

    也就是说getText后可调用append方法设置文本内容。spannable 则可在给定的字符区域使用样式,参见这里1、这里2。

    android:capitalize
    设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到,参见EditView此属性说明。

    android:cursorVisible
    设定光标为显示/隐藏,默认显示。

    android:digits
    设置允许输入哪些字符。如“1234567890.±*/% ()”

    android:drawableBottom
    在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。

    android:drawableLeft
    在text的左边输出一个drawable,如图片。

    android:drawablePadding
    设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。

    android:drawableRight
    在text的右边输出一个drawable,如图片。

    android:drawableTop
    在text的正上方输出一个drawable,如图片。

    android:editable
    设置是否可编辑。这里无效果,参见EditView。

    android:editorExtras
    设置文本的额外的输入数据。在EditView再讨论。

    android:ellipsize
    设置当文字过长时,该控件该如何显示。有如下值设置:”start”—?省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)

    android:freezesText
    设置保存文本的内容以及光标的位置。参见:这里。

    android:gravity
    设置文本位置,如设置成“center”,文本将居中显示。

    android:hintText
    为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。此属性在EditView中使用,但是这里也可以用。

    android:imeOptions
    附加功能,设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,而不设置默认是一个回车符号。这个在EditView中再详细说明,此处无用。

    android:imeActionId
    设置IME动作ID。在EditView再做说明,可以先看这篇帖子:这里。

    android:imeActionLabel
    设置IME动作标签。在EditView再做说明。

    android:includeFontPadding
    设置文本是否包含顶部和底部额外空白,默认为true。

    android:inputMethod
    为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是这里报错找不到。

    android:inputType
    设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView中再详细说明,这里无效果。

    android:linksClickable
    设置链接是否点击连接,即使设置了autoLink。

    android:marqueeRepeatLimit
    在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。

    android:ems
    设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度,如图:

    android:maxEms
    设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。

    android:minEms
    设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。

    android:maxLength
    限制显示的文本长度,超出部分不显示。

    android:lines
    设置文本的行数,设置两行就显示两行,即使第二行没有数据。

    android:maxLines
    设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。

    android:minLines
    设置文本的最小行数,与lines类似。

    android:lineSpacingExtra
    设置行间距。

    android:lineSpacingMultiplier
    设置行间距的倍数。如”1.2”

    android:numeric
    如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。

    android:password
    以小点”.”显示文本

    android:phoneNumber
    设置为电话号码的输入方式。

    android:privateImeOptions
    设置输入法选项,此处无用,在EditText将进一步讨论。

    android:scrollHorizontally
    设置文本超出TextView的宽度的情况下,是否出现横拉条。

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

    android:shadowColor
    指定文本阴影的颜色,需要与shadowRadius一起使用。效果:

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

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

    android:shadowRadius
    设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。

    android:singleLine
    设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。

    如android:text="test_ singleLine " android:singleLine=“true” android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行

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

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

    android:shadowRadius
    设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。

    android:singleLine
    设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。

    如android:text="test_ singleLine " android:singleLine=“true” android:layout_width="20dp"将只显示“t…”。

    如果不设置singleLine或者设置为false,文本将自动换行

    android:text
    设置显示文本.

    android:textSize
    设置文字大小,推荐度量单位”sp”,如”15sp”

    android:textStyle
    设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开

    android:typeface
    设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]

    android:height
    设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)

    android:maxHeight
    设置文本区域的最大高度

    android:minHeight
    设置文本区域的最小高度

    android:width
    设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。

    android:maxWidth
    设置文本区域的最大宽度

    android:minWidth
    设置文本区域的最小宽度

    android:textAppearance
    设置文字外观。

    如“?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。

    可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse

    android:textAppearance
    设置文字外观。如“?android:attr/textAppearanceLargeInverse

    ”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。

    可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse

    展开全文
  • 在父控件里面加上 android:focusable="true" android:focusableInTouchMode="true

    在父控件里面加上

    android:focusable="true"               
    android:focusableInTouchMode="true"
    
    展开全文
  • EditText(输入框)详解

    千次阅读 2016-05-02 16:12:03
    1.设置默认提示文本 如下图,相信你对于这种用户登录的界面并不陌生,是吧,我们很多时候都用的这种界面 相比另外这种,下面这种又如何? ...还不赖是吧,当然,不会在这里贴布局,这里只介绍默认提示文本的两个...

    1.设置默认提示文本

    如下图,相信你对于这种用户登录的界面并不陌生,是吧,我们很多时候都用的这种界面

    相比另外这种,下面这种又如何?

    还不赖是吧,当然,不会在这里贴布局,这里只介绍默认提示文本的两个控制属性:

    默认提示文本的两个属性如下:

    android:hint="默认提示文本"
    android:textColorHint="#95A1AA"

    前者设置提示的文本内容,后者设置提示文本的颜色!


    2.获得焦点后全选组件内所有文本内容

    当我们点击想当我们的输入框获得焦点后,不是将光标移动到文本的开始或者结尾;而是 获取到输入框中所有的文本内容的话!这个时候我们可以使用selectAllOnFocus属性

    android:selectAllOnFocus="true"

    比如下面的效果图: 第一个是设置了该属性的,第二个是没设置该属性的,设置为true的EditText获得焦点后 选中的是所有文本!


    3.限制EditText输入类型

    有时我们可能需要对输入的数据进行限制,比如输入电话号码的时候,你输入了一串字母,这 显然是不符合我们预期的,而限制输入类型可以通过inputType属性来实现!

    比如限制只能为电话号码,密码(textPassword):

    <EditText   
            android:layout_width="fill_parent"   
            android:layout_height="wrap_content"   
            android:inputType="phone" />  

    可选参数如下:

    文本类型,多为大写、小写和数字符号

    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"//时间键盘

    4.设置最小行,最多行,单行,多行,自动换行

    EditText默认是多行显示的,并且能够自动换行,即当一行显示不完的时候,他会自动换到第二行

    我们可以对其进行限制,比如
    设置最小行的行数:android:minLines="3"
    或者设置EditText最大的行数:android:maxLines="3"
    PS:当输入内容超过maxline,文字会自动向上滚动!!

    另外很多时候我们可能要限制EditText只允许单行输入,而且不会滚动,比如上面的登陆界面的 例子,我们只需要设置

    android:singleLine="true"</p>
    <p>
    即可实现单行输入不换行</p>
    
    <hr />
    
    <h2>5.设置文字间隔,设置英文字母大写类型</h2>
    
    <p>我们可以通过下述两个属性来设置字的间距:
    </p>
    <pre>
    android:textScaleX="1.5"    //设置字与字的水平间隔
    android:textScaleY="1.5"    //设置字与字的垂直间隔

    另外EditText还为我们提供了设置英文字母大写类型的属性:android:capitalize 默认none,提供了三个可选值:

    • sentences:仅第一个字母大写
    • words:每一个单词首字母大小,用空格区分单词
    • characters:每一个英文字母都大写

    6.控制EditText四周的间隔距离与内部文字与边框间的距离

    我们使用margin相关属性增加组件相对其他控件的距离,比如android:marginTop = "5dp" 使用padding增加组件内文字和组件边框的距离,比如android:paddingTop = "5dp"


    7.设置EditText获得焦点,同时弹出小键盘

    关于这个EditText获得焦点,弹出小键盘的问题,前不久的项目中纠结了笔者一段时间 需求是:进入Activity后,让EditText获得焦点,同时弹出小键盘供用户输入! 试了很多网上的方法都不可以,不知道是不是因为笔者用的5.1的系统的问题! 下面小结下:

    首先是让EditText获得焦点与清除焦点的

    edit.requestFocus(); //请求获取焦点
    edit.clearFocus(); //清除焦点

    获得焦点后,弹出小键盘,笔者大部分时间就花在这个上:

    • 低版本的系统直接requestFocus就会自动弹出小键盘了
    • 稍微高一点的版本则需要我们手动地去弹键盘: 第一种:
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

    第二种:

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);     imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);  
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘  

    不知道是什么原因,上面这两种方法并没有弹出小键盘,笔者最后使用了:windowSoftInputMode属性解决了弹出小键盘的问题,这里跟大家分享下:

    android:windowSoftInputMode Activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。
    这个属性能影响两件事情:
    【一】当有焦点产生时,软键盘是隐藏还是显示
    【二】是否减少活动主窗口大小以便腾出空间放软键盘

    简单点就是有焦点时的键盘控制以及是否减少Act的窗口大小,用来放小键盘
    有下述值可供选择,可设置多个值,用"|"分开
    stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
    stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
    stateHidden:用户选择activity时,软键盘总是被隐藏
    stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
    stateVisible:软键盘通常是可见的
    stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
    adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
    adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
    adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

    我们可以在AndroidManifest.xml为需要弹出小键盘的Activity设置这个属性,比如:

    然后在EditText对象requestFocus()就可以了~


    8.EditText光标位置的控制

    有时可能需要我们控制EditText中的光标移动到指定位置或者选中某些文本!
    EditText为我们提供了setSelection()的方法,方法有两种形式:


    一个参数的是设置光标位置的,两个参数的是设置起始位置与结束位置的中间括的部分,即部分选中!
    当然我们也可以调用setSelectAllOnFocus(true);让EditText获得焦点时选中全部文本!
    另外我们还可以调用setCursorVisible(false);设置光标不显示
    还可以调用getSelectionStart()getSelectionEnd获得当前光标的前后位置


    9.带表情的EditText的简单实现

    相信大家对于QQ或者微信很熟悉吧,我们发送文本的时候可以连同表情一起发送,有两种简单的实现方式:

    1.使用SpannableString来实现
    2.使用Html类来实现
    这里笔者用的是第一种,这里只实现一个简单的效果,大家可以把方法抽取出来,自定义一个EditText;
    也可以自己动手写个类似于QQ那样有多个表情选择的输入框!

    看下效果图(点击添加表情即可完成表情添加):

    代码也很简单:

    public class MainActivity extends Activity {
        private Button btn_add;
        private EditText edit_one;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btn_add = (Button) findViewById(R.id.btn_add);
            edit_one = (EditText) findViewById(R.id.edit_one);
            btn_add.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    SpannableString spanStr = new SpannableString("imge");
                    Drawable drawable = MainActivity.this.getResources().getDrawable(R.drawable.f045);
                    drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
                    ImageSpan span = new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE);
                    spanStr.setSpan(span,0,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    int cursor = edit_one.getSelectionStart();
                    edit_one.getText().insert(cursor, spanStr);
                }
            });
        }
    }

    PS:对了,别忘了放一个图片哦~


    10.带删除按钮的EditText

    我们常常在App的输入界面上看到:


    当我们输入内容后,右面会出现这样一个小叉叉的图标,我们点击后会清空输入框中的内容!
    实现起来其实也很简单:
    为EditText设置addTextChangedListener,然后重写TextWatcher()里的抽象方法,这个用于监听输入框变化的;然后setCompoundDrawablesWithIntrinsicBounds设置小叉叉的图片;最后,重写onTouchEvent方法,如果点击区域是小叉叉图片的位置,清空文本!

    实现代码如下:

    public class EditTextWithDel extends EditText {
    
        private final static String TAG = "EditTextWithDel";
        private Drawable imgInable;
        private Drawable imgAble;
        private Context mContext;
    
        public EditTextWithDel(Context context) {
            super(context);
            mContext = context;
            init();
        }
    
        public EditTextWithDel(Context context, AttributeSet attrs) {
            super(context, attrs);
            mContext = context;
            init();
        }
    
        public EditTextWithDel(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            mContext = context;
            init();
        }
    
        private void init() {
            imgInable = mContext.getResources().getDrawable(R.drawable.delete_gray);
            addTextChangedListener(new TextWatcher() {
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                }
    
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                }
    
                @Override
                public void afterTextChanged(Editable s) {
                    setDrawable();
                }
            });
            setDrawable();
        }
    
        // 设置删除图片
        private void setDrawable() {
            if (length() < 1)
                setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
            else
                setCompoundDrawablesWithIntrinsicBounds(null, null, imgInable, null);
        }
    
        // 处理删除事件
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (imgInable != null && event.getAction() == MotionEvent.ACTION_UP) {
                int eventX = (int) event.getRawX();
                int eventY = (int) event.getRawY();
                Log.e(TAG, "eventX = " + eventX + "; eventY = " + eventY);
                Rect rect = new Rect();
                getGlobalVisibleRect(rect);
                rect.left = rect.right - 100;
                if (rect.contains(eventX, eventY))
                    setText("");
            }
            return super.onTouchEvent(event);
        }
        @Override
        protected void finalize() throws Throwable {
            super.finalize();
        }
    }
    展开全文
  • EditText基本用法

    千次阅读 2018-01-25 10:39:31
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_co
  • 实现了EditText当有文本输入的时候出现删除标签,密码返回的形式是用*替代了系统的.可直接用于Android客户端登陆验证的集成
  • 关于基本控件EditText属性大全详解

    千次阅读 2016-04-04 21:57:04
     把该EditText设为:android:password="true" // 以”.”形式显示文本 (2)在代码里设置: 通过设置EditText的setTransformationMethod()方法来实现隐藏密码或这显示密码。 editText.setTransformationMet
  • 安卓EditText使用总结

    千次阅读 2018-09-11 16:08:15
    本文是在日常开发中所遇到的EditText使用需求的总结。 一、光标移动到文本框末尾。 if (!TextUtils.isEmpty(editText.getText())) { editText.setSelection(editText.getText().length()); } 二、实现搜索功能...
  • 记得两周前写过关于@功能的简单实现, 那次的实现思路是监听删除字符串, 如果删除一个字符并且该字符是unicode编码为 8197 的字符, 就查找@符号并删除整个@字符串. 刚好上周做到了@的需求, 完全推翻了上篇博客的思路 ...
  • EditText常用属性和监听事件

    千次阅读 2019-08-01 08:37:38
    EditText EditText和Button都是TextView的子类,区别在于TextView不可以编辑,而EditText可以编辑。 常用属性 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=...
  • Android开发&EditText的使用方式

    千次阅读 2019-03-06 17:27:44
    安卓开发内容编辑不同于H5,即便是编辑多行文本,文本块,也只能使用 EditText,这也是我们使用的最多的控件之一,今天就来分析一下,EditText该怎样使用。 在开始之前,先查看一下这个View的继承方式,通过继承...
  • EditText属性及一些常用用法

    万次阅读 2017-11-06 15:15:14
    EditText 属性及一些常用用法
  • 隐藏android中EditText的下划线

    万次阅读 多人点赞 2019-08-15 10:13:52
    有的时候需要隐藏掉EditText的边框和下划线,代码为: 主要是这一栏:android:background="@null"<EditText style="?android:attr/textViewStyle" android:layout_width="wrap_content" android:layout_heig
  • android EditText自定义样式

    万次阅读 多人点赞 2014-05-05 17:02:43
    EditText的background属性设置为@null就搞定了:android:background="@null" style属性倒是可加可不加 附原文: @SlumberMachine, that's a great observation! But, it seems that there is more to making a ...
  • 我们都知道当我们把EditText固定高度之后,默认qing'k
  • EditText设置可以编辑和不可编辑状态

    万次阅读 热门讨论 2012-10-15 09:08:50
    1、首先想到在xml中设置android:editable="false...2、然后尝试使用editText.setFocusable(false);和editText.setEnabled(false);设置不可编辑状态;editText.setFocusable(true);和 editText.setEnabled(true);设置
  • EditText可以设置多种输入方式,其中若要设置输入数字和小数点时应注意一下几点: 有两种写法:一、利用安卓自身的语法。二、利用正则表达式。 一、利用安卓自身的语法 1.如果设置只输入数字 edittext....
  • 安卓解决EditText进入页面抢占焦点

    千次阅读 2018-11-02 10:22:15
    安卓解决EditText进入页面抢占焦点 进入页面时,EditText会自动抢占焦点,弹出键盘,在一些交互上,比较影响用户体验,我们用2行代码来解决这个问题 1,在EditText父布局添加,这样父布局先于EditText夺取焦点, ...
  • 或许我们都遇到过这样的需求,主页面里面有一个EditText,而我们需要通过点击这个EditText的时候弹出一个带EditText的弹出框。在我们修改完新的信息的时候,点击确定,弹出框里面的值自动保存到主EditText里面。并且...
  • 监听EditText内容变化的两种方式

    万次阅读 多人点赞 2016-12-17 17:47:17
    1、EditText输入框的动态监听方法 A:监听 输入结束点击键盘确认键执行的 方法 et_money.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int...
1 2 3 4 5 ... 20
收藏数 105,774
精华内容 42,309
关键字:

edittext